Frage

Ich bin zu debuggen versuchen, und einige Probleme mit einem Win32-Makro-Anwendung geschrieben C ++ lösen jedoch bin ich das seltsamste Problem haben.

Ich habe ein 16-Bit-Programm starten und dann simuliert Daten in der Eingabe und bin seit mehr als zwei Jahren ShellExecute wurde jetzt mit. Ich habe nicht diesen eigentlichen Code überhaupt berühren, aber jetzt ist es nicht funktioniert.

Ich mache ShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);. Dies hat einwandfrei jahrelang gearbeitet, aber alle plötzlich, es funktioniert nicht . Es gibt mir einen ACCESS_DENIED Fehlercode. Ich habe gegoogelt und anscheinend ist dies ein ziemlich häufiges Problem mit 16-Bit-Anwendungen zu starten.

Die Workstation XP SP2-Umgebung hat sich nicht verändert, und es war tatsächlich arbeiten, bis ich ein wenig umgebaut, während vor (ich wieder aufgebaut habe es schon viele Male zuvor).

Der Code ist in einer Fensterprozedur Funktion und wenn ich es aus und starten Sie das Programm in der WinMain Funktion es funktioniert, aber der Code im Fenster Prozedur ...

sein

Ich habe zahlreiche Alternativen ausprobiert, aber sie alle geben das gleiche Problem.

Das größte Problem dabei ist es funktioniert dann ganz plötzlich beschlossen, es war nicht beide gehen zu ohne Änderung Code und Umwelt! In der Tat war es etwa auf halbem Weg durch Tests Änderungen, dass es dachte, es würde aufhören zu arbeiten.

Bitte Hilfe, da ich nichts ohne das Programm starten tun. Es ist der erste Schritt in dem Code, dass ich das Debuggen!

War es hilfreich?

Lösung

Ich habe das Problem entdeckt. Ich habe die lpDirectory Parameter (von denen ich belieferte NULL oder "") in das Verzeichnis der ausführbaren Datei, die PathRemoveFileSpec() Funktion.

Die Anwendung erneut startet. Jetzt kann ich weiterhin die Festsetzung ruhen des Programms!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top