Domanda

Sto cercando di eseguire il debug e risolvere alcuni problemi con una macro applicazione Win32 scritto C ++ tuttavia sto avendo il problema più strano.

Devo lanciare un programma a 16 bit e quindi simulare l'immissione di dati e sono state usando ShellExecute per oltre due anni. Non ho toccato il codice vero e proprio a tutti, ma ora non funziona.

che sto facendo ShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);. Questo ha funzionato senza problemi per anni, ma all'improvviso, ha smesso di funzionare . Mi dà un codice di errore ACCESS_DENIED. Googled e apparentemente questo è un problema abbastanza comune con il lancio di applicazioni a 16 bit.

L'ambiente workstation XP SP2 non è cambiato affatto, e in realtà è stato lavorare fino a quando ho ricostruito un po 'di tempo fa (ho ricostruito prima di molte volte).

Il codice è all'interno di una funzione procedura di finestra e quando prendo fuori e lanciare il programma nella funzione WinMain funziona, ma il codice deve essere nella window procedure ...

Ho provato numerose alternative, ma tutti danno lo stesso problema.

Il problema più grande con questo è Si stava lavorando poi tutto ad un tratto ha deciso che non era intenzione di senza modificare sia il codice e l'ambiente! , infatti, era a metà strada attraverso la sperimentazione cambiamenti che si pensava che sarebbe smettere di lavorare.

Si prega di aiuto come io non posso fare nulla senza il lancio del programma. E 'il primo passo nel codice che sto debug!

È stato utile?

Soluzione

ho scoperto il problema. Ho cambiato il parametro lpDirectory (di cui mi forniva NULL o "") nella directory del file eseguibile, utilizzando la funzione PathRemoveFileSpec().

L'applicazione sta lanciando di nuovo. Ora posso continuare fissa il riposare del programma!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top