Ersatzdebugger
- 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
@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!
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!
Code: Alles auswählen
While adr = 0
adr = FindWindow_(0, "miniDebugger")
Wend

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
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden 
- 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
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:
Gruß Thommy
Edit by NicTheQuick: Code-Tags gesetzt
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)
EndProcedureGruß Thommy
Edit by NicTheQuick: Code-Tags gesetzt