Ti dico come farei io, poi non è detto che non ci siano modi più semplici.
- ho il mio programma "originale", diciamo excel.exe
- ho il mio programma di finta formattazione, diciamo fake.exe
- creo un nuovo eseguibile win32, che ha due risorse custom - appunto, excel.exe e fake.exe
- nel suo WinMain (suppongo tu lo scriva in C), per prima cosa estrae dalle risorse excel.exe (FindResource/SizeOfResource/LockResource), lo salva nella directory dei temporanei, lo esegue (asincronicamente) con CreateProcess o ShellExecuteEx, si mette in attesa (infinita) che termini usando WaitForSingleObject (usando l'handle di processo)
- quando il primo termina (cioé: l'utente è uscito da excel.exe), estrae dalle risorse fake.exe, lo salva nella directory dei temporanei, lo esegue e si mette in attesa con la solita WaitForSingleObject
- dopodiché esce.
Se fake.exe è tuo, nessuno ti impedisce di inglobarlo nel programma stesso, al posto che piazzarlo nelle risorse. Se è C scritto decentemente, non è un problema fare il porting da 16 bit a 32.
L'alternativa è modificare direttamente l'exe originario, allargandone una sezione, piazzandoci il codice di fake.exe e modificando l'entry point del programma - che è poi quello che fanno i virus. Facendo così, però, il tuo scherzo verrebbe eseguito *prima* del programma originale, e non dopo.
ma dal C c'è sicuramente una funzione per chiamare un programma esterno
system() dall'ansi C, ShellExecute, ShellExecuteEx, CreateProcess, WinExec e un altro paio dalle API di Windows.
[/quote]
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...