Verfasst: 19.09.2004 22:33
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 
Code: Alles auswählen
While adr = 0
adr = FindWindow_(0, "miniDebugger")
Wend

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