AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute im Debug Mode

Ein Thema von Amateurprofi · begonnen am 25. Mai 2015 · letzter Beitrag vom 31. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2      
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#1

ShellExecute im Debug Mode

  Alt 25. Mai 2015, 22:17
Wenn ich im Debug-Mode mit ShellExceute ein Programm starte, dann lande ich immer im CPU-Fenster.
Code:
00570385 8BEC            mov ebp,esp
00570387 83C4F0           add esp,-$10
0057038A B8CC885600       mov eax,$005688cc
0057038F E8BCB3E9FF      call $0040b750
00570394 A1986E5700       mov eax,[$00576e98]
Gut, mit F9 geht's dann weiter, aber es ist doch etwas nervig.

Kann man das irgendwie verhindern?

Delphi-Quellcode:
      S:=ParamStr(0);
      N:=ShellExecute(0,'open',PWideChar(S),Nil,Nil,SW_SHOWNORMAL);
Arbeite ich nicht im Debug-Mode funktioniert es problemlos.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 22:20
Was steht denn in der Variable S? Voller Pfad? Parameter? Quotes?

MfG Dalai
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#3

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:06
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).
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:14
Steht denn nichts dazu im Ereignisprotokoll?
$2B or not $2B
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:20
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;
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:31
Tippe eher darauf das hier eine ShellExtension mit "ungünstiger Compilierung" das Problem ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#7

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:48
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.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#8

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:54
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;
Wird nicht im OnCreate oder OnShow aufgerufen, sondern über ein Menu-Item.
Habe es soeben auch mit einem Button versucht, mit genau dem gleichen Resultat.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#9

AW: ShellExecute im Debug Mode

  Alt 25. Mai 2015, 23:57
Tippe eher darauf das hier eine ShellExtension mit "ungünstiger Compilierung" das Problem ist.
Kann man prüfen, ob das der Fall ist?
Und wie kann man das beheben?
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#10

AW: ShellExecute im Debug Mode

  Alt 26. Mai 2015, 00:05
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz