![]() |
ShellExecute im Debug Mode
Wenn ich im Debug-Mode mit ShellExceute ein Programm starte, dann lande ich immer im CPU-Fenster.
Code:
Gut, mit F9 geht's dann weiter, aber es ist doch etwas nervig.
00570385 8BEC mov ebp,esp
00570387 83C4F0 add esp,-$10 0057038A B8CC885600 mov eax,$005688cc 0057038F E8BCB3E9FF call $0040b750 00570394 A1986E5700 mov eax,[$00576e98] Kann man das irgendwie verhindern?
Delphi-Quellcode:
Arbeite ich nicht im Debug-Mode funktioniert es problemlos.
S:=ParamStr(0);
N:=ShellExecute(0,'open',PWideChar(S),Nil,Nil,SW_SHOWNORMAL); |
AW: ShellExecute im Debug Mode
Was steht denn in der Variable S? Voller Pfad? Parameter? Quotes?
MfG Dalai |
AW: ShellExecute im Debug Mode
S wird mit ParamStr(0) gefüllt also voller Pfad
Aus der OH: Anmerkung: ParamStr(0) gibt den Pfad und den Dateinamen des ausgeführten Programms zurück (z.B. C:\TEST\MYPROG.EXE). |
AW: ShellExecute im Debug Mode
Steht denn nichts dazu im Ereignisprotokoll?
|
AW: ShellExecute im Debug Mode
Das geht nur mit Button-Click, nicht in der OnCreate- oder OnShow-Procedure wegen "Kettenreaktion".
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var S : String; begin S:=ParamStr(0); ShellExecute(0,'open',PWideChar(S),Nil,Nil,SW_SHOWNORMAL); end; |
AW: ShellExecute im Debug Mode
Tippe eher darauf das hier eine ShellExtension mit "ungünstiger Compilierung" das Problem ist.
|
AW: ShellExecute im Debug Mode
Da stehen kilometerweise Infos, die ich nicht mal ansatzweise verstehe
So sieht das aus: Vor ShellExecute vorhandene Meldungen Thread-Start: Thread-ID: 6760. Prozess VierGewinnt.exe (5836) Prozessstart: E:\Daten\Delphi XE2\Vier Gewinnt\Win32\Debug\VierGewinnt.exe. Basisadresse: $00400000. Prozess VierGewinnt.exe (5836) Modul laden: VierGewinnt.exe. Enthält Debug-Infos. Basisadresse: $00400000. Prozess VierGewinnt.exe (5836) Modul laden: ntdll.dll. Ohne Debug-Infos. Basisadresse: $770C0000. Prozess VierGewinnt.exe (5836) Modul laden: KERNEL32.dll. Ohne Debug-Infos. Basisadresse: $757C0000. Prozess VierGewinnt.exe (5836) Modul laden: KERNELBASE.dll. Ohne Debug-Infos. Basisadresse: $76C70000. Prozess VierGewinnt.exe (5836) Modul laden: OLEAUT32.dll. Ohne Debug-Infos. Basisadresse: $74DA0000. Prozess VierGewinnt.exe (5836) Modul laden: ole32.dll. Ohne Debug-Infos. Basisadresse: $758D0000. Prozess VierGewinnt.exe (5836) Modul laden: msvcrt.dll. Ohne Debug-Infos. Basisadresse: $75380000. Prozess VierGewinnt.exe (5836) Modul laden: GDI32.dll. Ohne Debug-Infos. Basisadresse: $751F0000. Prozess VierGewinnt.exe (5836) Modul laden: USER32.dll. Ohne Debug-Infos. Basisadresse: $75280000. Prozess VierGewinnt.exe (5836) Modul laden: ADVAPI32.dll. Ohne Debug-Infos. Basisadresse: $74B60000. Prozess VierGewinnt.exe (5836) Modul laden: SECHOST.dll. Ohne Debug-Infos. Basisadresse: $74E40000. Prozess VierGewinnt.exe (5836) Modul laden: RPCRT4.dll. Ohne Debug-Infos. Basisadresse: $74CB0000. Prozess VierGewinnt.exe (5836) Modul laden: SspiCli.dll. Ohne Debug-Infos. Basisadresse: $74A40000. Prozess VierGewinnt.exe (5836) Modul laden: CRYPTBASE.dll. Ohne Debug-Infos. Basisadresse: $74A30000. Prozess VierGewinnt.exe (5836) Modul laden: LPK.dll. Ohne Debug-Infos. Basisadresse: $76A00000. Prozess VierGewinnt.exe (5836) Modul laden: USP10.dll. Ohne Debug-Infos. Basisadresse: $74AC0000. Prozess VierGewinnt.exe (5836) Modul laden: MSIMG32.dll. Ohne Debug-Infos. Basisadresse: $6FC50000. Prozess VierGewinnt.exe (5836) Modul laden: VERSION.dll. Ohne Debug-Infos. Basisadresse: $74960000. Prozess VierGewinnt.exe (5836) Modul laden: COMCTL32.dll. Ohne Debug-Infos. Basisadresse: $73890000. Prozess VierGewinnt.exe (5836) Modul laden: SHLWAPI.dll. Ohne Debug-Infos. Basisadresse: $75A40000. Prozess VierGewinnt.exe (5836) Modul laden: SHELL32.dll. Ohne Debug-Infos. Basisadresse: $75B00000. Prozess VierGewinnt.exe (5836) Modul laden: COMDLG32.dll. Ohne Debug-Infos. Basisadresse: $74E80000. Prozess VierGewinnt.exe (5836) Modul laden: WINSPOOL.DRV. Ohne Debug-Infos. Basisadresse: $74900000. Prozess VierGewinnt.exe (5836) Modul laden: IMM32.dll. Ohne Debug-Infos. Basisadresse: $76750000. Prozess VierGewinnt.exe (5836) Modul laden: MSCTF.dll. Ohne Debug-Infos. Basisadresse: $75120000. Prozess VierGewinnt.exe (5836) Modul laden: WTSAPI32.dll. Ohne Debug-Infos. Basisadresse: $73D20000. Prozess VierGewinnt.exe (5836) Modul laden: WINSTA.dll. Ohne Debug-Infos. Basisadresse: $73C60000. Prozess VierGewinnt.exe (5836) Thread-Start: Thread-ID: 6852. Prozess VierGewinnt.exe (5836) Thread-Start: Thread-ID: 6536. Prozess VierGewinnt.exe (5836) Modul laden: UxTheme.dll. Ohne Debug-Infos. Basisadresse: $6DF80000. Prozess VierGewinnt.exe (5836) Modul laden: ole32.dll. Ohne Debug-Infos. Basisadresse: $037B0000. Prozess VierGewinnt.exe (5836) Modul entladen: ole32.dll. Prozess VierGewinnt.exe (5836) Modul laden: ole32.dll. Ohne Debug-Infos. Basisadresse: $037B0000. Prozess VierGewinnt.exe (5836) Modul entladen: ole32.dll. Prozess VierGewinnt.exe (5836) Modul laden: CLBCatQ.DLL. Ohne Debug-Infos. Basisadresse: $76A50000. Prozess VierGewinnt.exe (5836) Modul laden: dwmapi.dll. Ohne Debug-Infos. Basisadresse: $714B0000. Prozess VierGewinnt.exe (5836) Thread-Start: Thread-ID: 2136. Prozess VierGewinnt.exe (5836) Thread-Start: Thread-ID: 4020. Prozess VierGewinnt.exe (5836) Nach ShellExecute (als Programm im CPU-Fenster hing) hinzugekommen Modul laden: PROPSYS.dll. Ohne Debug-Infos. Basisadresse: $73720000. Prozess VierGewinnt.exe (5836) Modul laden: NTMARTA.dll. Ohne Debug-Infos. Basisadresse: $748D0000. Prozess VierGewinnt.exe (5836) Modul laden: WLDAP32.dll. Ohne Debug-Infos. Basisadresse: $75AA0000. Prozess VierGewinnt.exe (5836) Modul laden: profapi.dll. Ohne Debug-Infos. Basisadresse: $75AF0000. Prozess VierGewinnt.exe (5836) Modul laden: urlmon.dll. Ohne Debug-Infos. Basisadresse: $76B20000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-ole32-l1-1-0.dll. Ohne Debug-Infos. Basisadresse: $769F0000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-shlwapi-l1-1-0.dll. Ohne Debug-Infos. Basisadresse: $74E60000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-advapi32-l1-1-0.dll. Ohne Debug-Infos. Basisadresse: $750E0000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-user32-l1-1-0.dll. Ohne Debug-Infos. Basisadresse: $74CA0000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-version-l1-1-0.dll. Ohne Debug-Infos. Basisadresse: $75A30000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-normaliz-l1-1-0.dll. Ohne Debug-Infos. Basisadresse: $76A40000. Prozess VierGewinnt.exe (5836) Modul laden: Normaliz.dll. Ohne Debug-Infos. Basisadresse: $74E70000. Prozess VierGewinnt.exe (5836) Modul laden: iertutil.dll. Ohne Debug-Infos. Basisadresse: $767B0000. Prozess VierGewinnt.exe (5836) Modul laden: WININET.dll. Ohne Debug-Infos. Basisadresse: $75450000. Prozess VierGewinnt.exe (5836) Modul laden: USERENV.dll. Ohne Debug-Infos. Basisadresse: $75430000. Prozess VierGewinnt.exe (5836) Modul laden: Secur32.dll. Ohne Debug-Infos. Basisadresse: $73CC0000. Prozess VierGewinnt.exe (5836) Modul laden: api-ms-win-downlevel-advapi32-l2-1-0.dll. Ohne Debug-Infos. Basisadresse: $6FBC0000. Prozess VierGewinnt.exe (5836) Modul laden: SETUPAPI.dll. Ohne Debug-Infos. Basisadresse: $74F10000. Prozess VierGewinnt.exe (5836) Modul laden: CFGMGR32.dll. Ohne Debug-Infos. Basisadresse: $750B0000. Prozess VierGewinnt.exe (5836) Modul laden: DEVOBJ.dll. Ohne Debug-Infos. Basisadresse: $74AA0000. Prozess VierGewinnt.exe (5836) Modul laden: apphelp.dll. Ohne Debug-Infos. Basisadresse: $74290000. Prozess VierGewinnt.exe (5836) Thread-Start: Thread-ID: 4224. Prozess VierGewinnt.exe (5836) Thread-Start: Thread-ID: 2036. Prozess UNKNOWN (6988) Prozessstart: Attached/Spawned Process 0x1B4C. Basisadresse: $00400000. Prozess UNKNOWN (6988) Modul laden: UNKNOWN. Ohne Debug-Infos. Basisadresse: $00400000. Prozess UNKNOWN (6988) Modul laden: ntdll.dll. Ohne Debug-Infos. Basisadresse: $770C0000. Prozess UNKNOWN (6988) Modul laden: KERNEL32.dll. Ohne Debug-Infos. Basisadresse: $757C0000. Prozess UNKNOWN (6988) Modul laden: KERNELBASE.dll. Ohne Debug-Infos. Basisadresse: $76C70000. Prozess UNKNOWN (6988) Modul laden: OLEAUT32.dll. Ohne Debug-Infos. Basisadresse: $74DA0000. Prozess UNKNOWN (6988) Modul laden: ole32.dll. Ohne Debug-Infos. Basisadresse: $758D0000. Prozess UNKNOWN (6988) Modul laden: msvcrt.dll. Ohne Debug-Infos. Basisadresse: $75380000. Prozess UNKNOWN (6988) Modul laden: GDI32.dll. Ohne Debug-Infos. Basisadresse: $751F0000. Prozess UNKNOWN (6988) Modul laden: USER32.dll. Ohne Debug-Infos. Basisadresse: $75280000. Prozess UNKNOWN (6988) Modul laden: ADVAPI32.dll. Ohne Debug-Infos. Basisadresse: $74B60000. Prozess UNKNOWN (6988) Modul laden: SECHOST.dll. Ohne Debug-Infos. Basisadresse: $74E40000. Prozess UNKNOWN (6988) Modul laden: RPCRT4.dll. Ohne Debug-Infos. Basisadresse: $74CB0000. Prozess UNKNOWN (6988) Modul laden: SspiCli.dll. Ohne Debug-Infos. Basisadresse: $74A40000. Prozess UNKNOWN (6988) Modul laden: CRYPTBASE.dll. Ohne Debug-Infos. Basisadresse: $74A30000. Prozess UNKNOWN (6988) Modul laden: LPK.dll. Ohne Debug-Infos. Basisadresse: $76A00000. Prozess UNKNOWN (6988) Modul laden: USP10.dll. Ohne Debug-Infos. Basisadresse: $74AC0000. Prozess UNKNOWN (6988) Modul laden: MSIMG32.dll. Ohne Debug-Infos. Basisadresse: $6FC50000. Prozess UNKNOWN (6988) Modul laden: VERSION.dll. Ohne Debug-Infos. Basisadresse: $74960000. Prozess UNKNOWN (6988) Modul laden: COMCTL32.dll. Ohne Debug-Infos. Basisadresse: $73890000. Prozess UNKNOWN (6988) Modul laden: SHLWAPI.dll. Ohne Debug-Infos. Basisadresse: $75A40000. Prozess UNKNOWN (6988) Modul laden: SHELL32.dll. Ohne Debug-Infos. Basisadresse: $75B00000. Prozess UNKNOWN (6988) Modul laden: COMDLG32.dll. Ohne Debug-Infos. Basisadresse: $74E80000. Prozess UNKNOWN (6988) Modul laden: WINSPOOL.DRV. Ohne Debug-Infos. Basisadresse: $74900000. Prozess UNKNOWN (6988) Modul laden: IMM32.dll. Ohne Debug-Infos. Basisadresse: $76750000. Prozess UNKNOWN (6988) Modul laden: MSCTF.dll. Ohne Debug-Infos. Basisadresse: $75120000. Prozess UNKNOWN (6988) Nach F9 im Debug-Fenster hinzugekommen Modul laden: WTSAPI32.dll. Ohne Debug-Infos. Basisadresse: $73D20000. Prozess UNKNOWN (6988) Modul laden: WINSTA.dll. Ohne Debug-Infos. Basisadresse: $73C60000. Prozess UNKNOWN (6988) Thread-Start: Thread-ID: 5920. Prozess UNKNOWN (6988) Thread-Start: Thread-ID: 1708. Prozess UNKNOWN (6988) Modul laden: UxTheme.dll. Ohne Debug-Infos. Basisadresse: $6DF80000. Prozess UNKNOWN (6988) Modul laden: ole32.dll. Ohne Debug-Infos. Basisadresse: $036C0000. Prozess UNKNOWN (6988) Modul entladen: ole32.dll. Prozess UNKNOWN (6988) Modul laden: dwmapi.dll. Ohne Debug-Infos. Basisadresse: $714B0000. Prozess UNKNOWN (6988) Thread-Start: Thread-ID: 6492. Prozess VierGewinnt.exe (5836) Thread-Ende: Thread-ID: 4224. Prozess VierGewinnt.exe (5836) Nach F9 im CPU-Fenster läuft auch alles ganz normal. |
AW: ShellExecute im Debug Mode
Zitat:
Habe es soeben auch mit einem Button versucht, mit genau dem gleichen Resultat. |
AW: ShellExecute im Debug Mode
Zitat:
Und wie kann man das beheben? |
AW: ShellExecute im Debug Mode
Kannst du das in einem Testprogramm nachvollziehen? Wenn nein, dann sucht man das Problem vermutlich an der falschen Stelle, oder anders gesagt, das ShellExecute ist nicht dafür verantwortlich sondern irgendetwas, was vorher im Code steht.
MfG Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz