Ersatzdebugger

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Das mit dem Delay war eigentlich ne "Notlösung", es war spät,ich wollte fertig werden, kein Problem, ich werd da morgen was ändern, dann läufts überall :wink:
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Franky

Habe Deinen Code überarbeitet. Funktioniert Wahlweise mit
einer Library oder einer DLL. Sources und Dateien kannste ja mal
downloaden:

http://de.geocities.com/ts_softde/Debugger.zip

Kannste auch auf Deiner Homepage verwenden, da ich die Datei
bei mir bald wieder entferne!
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Code: Alles auswählen

  While adr = 0
      adr = FindWindow_(0,  "miniDebugger")
    Wend
Bild

Und ich quäl mich hier die ganze zeit ab, die Processid mittels Runprogram zu
übergeben und dann auf antwort zu warten.
Manchmal sieht man echt den Wald vor lauter Bäumen nicht /:->

Danke, dass du mich von meinem Leiden erlöst hast :allright:
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Franky

Ist aber auch nicht Perfekt, da wenn die Exe nicht gefunden wird,
wird das Programm nicht beendet und bleibt im Speicher.

Also Versuch mal Deine Lösung weiter zu verfolgen!

Gruß Thommy
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Habe Deine Idee mit der Debugger-DLL nochmal durchdacht, und eine großen Denkfehler bemerkt. Das Ausgabefenster, zum Debuggen, kann doch direkt in der DLL erzeugt werden! Habe folgenden Code dazu entwickelt:

Code: Alles auswählen

Global frmDebugger.l 
Global lvDebug.l 
 
Procedure MyOnlyOne(MutexName.s) 
  result = CreateMutex_(0, 0, @MutexName) 
  If GetLastError_() = #ERROR_ALREADY_EXISTS 
    ReleaseMutex_(result) 
    CloseHandle_(result) 
    End 
  EndIf 
  ProcedureReturn result 
EndProcedure 
Procedure MySetTopWindow(Window.l) 
  Pos.RECT 
  GetWindowRect_(WindowID(Window), Pos) 
  SetWindowPos_(WindowID(Window), #HWND_TOPMOST, Pos\left, Pos\top, WindowWidth(), WindowHeight(), 0) 
EndProcedure 
Procedure MyCallBack(WindowID, message,wParam,lParam) 
  Select message 
    Case #WM_CLOSE 
      CloseWindow(frmDebugger) 
    Case #WM_SIZE 
      ResizeGadget(lvDebug, 0, 0 , WindowWidth(), WindowHeight()) 
  EndSelect 
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 
 
ProcedureDLL AttachProcess(dummy.l) ; Initialisierung der DLL 
  frmDebugger = OpenWindow(#PB_Any, 200, 200, 200, 200, #PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget, "miniDebugger") 
  MySetTopWindow(frmDebugger) 
  CreateGadgetList(WindowID()) 
  lvDebug = ListViewGadget(#PB_Any, 0, 0, 200, 200) 
  SetWindowCallback(@MyCallBack()) 
EndProcedure 
ProcedureDLL DebugS(string.s); Gibt den angegebenen String im Debugfenster aus 
  AddGadgetItem(lvDebug, -1, string) 
EndProcedure 
ProcedureDLL DebugL(wert); Gibt den angegebenen Longwert im Debugfenster aus 
  AddGadgetItem(lvDebug, -1, Str(wert)) 
EndProcedure 
ProcedureDLL DebugC(); Löscht das Debugfenster (Inhalt) 
  ClearGadgetItemList(lvDebug) 
EndProcedure


Gruß Thommy

Edit by NicTheQuick: Code-Tags gesetzt
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Die Sache mit dem Denkfehler weise ich von mir :wink:

Wenn man das Fenster in der DLL erzeugt, schließt es sich bei einem Programmabsturz automatisch mit, das ist ja gerade das, was ich NICHT will :|
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Antworten