hmm soweit ich das verstanden hab, willst den Cursor an eine bestimmte Stelle in der PB IDE setzen lassen.
Ist zwar nicht wirlich das was brauchst, aber ich würde damit
Code: Alles auswählen
Procedure GetEditorGadgetCursorX(Gadget)
; returns X-Pos of Cursor
REG = GadgetID(Gadget)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
EndProcedure
Procedure GetEditorGadgetCursorY(Gadget)
; returns Y-Pos of Cursor
REG = GadgetID(Gadget)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1
EndProcedure
Procedure EditorGadgetCursorTotalPos(Gadget)
; returns relative Position of Cursor
SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn Range\cpMax
EndProcedure
Procedure SetEditorGadgetPos(Gadget,x,y)
; Set cursor position
REG = GadgetID(Gadget)
CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0)
LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0)
If LLength >= x-1
CharIdx + x-1
EndIf
Range.CHARRANGE
Range\cpMin = CharIdx
Range\cpMax = CharIdx
SendMessage_(REG,#EM_EXSETSEL,0,Range)
EndProcedure
OpenWindow(1,200,200,300,200,"EditorGadget",#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
EditorGadget(1,5,5,290,190)
AddGadgetItem(1,-1,"Hallo!")
AddGadgetItem(1,-1,"")
AddGadgetItem(1,-1,"Hier ein paar Proceduren")
AddGadgetItem(1,-1,"zur Steuerung des Cursors")
AddGadgetItem(1,-1,"im EditorGadget.")
SetEditorGadgetPos(1,7,2)
SetActiveGadget(1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: End
EndSelect
SetWindowText_(WindowID(1),"X: "+Str(GetEditorGadgetCursorX(1))+" Y: "+Str(GetEditorGadgetCursorY(1))+" -- Position: "+Str(EditorGadgetCursorTotalPos(1)))
ForEver
experimentieren, und mit dem Zeugs
Handlenummer unter Cursor ermitteln.
Code: Alles auswählen
Structure Point64
StructureUnion
p.point
q.q
EndStructureUnion
EndStructure
Procedure Thread(z)
hndl = 0
cursor.Point64
Repeat
GetCursorPos_(cursor.Point64)
hndl = WindowFromPoint_( cursor\q )
SetGadgetText(1,"Handle-Nummer unter Maus: "+Str(hndl))
Delay(100)
ForEver
EndProcedure
If OpenWindow(0,0,0,250,50,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StickyWindow(0,1)
TextGadget(1,10,10,220,20,"",0)
CreateThread(@Thread(),0)
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Mausklicks simulieren
Code: Alles auswählen
Procedure Left_Click()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Left_DoubleClick()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Right_Click()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Right_DoubleClick()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Middle_Click()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Middle_DoubleClick()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
EndProcedure
x=100 : y=100
SetCursorPos_(x,y) ;erst mal an die Position setzen
Es geht immer irgendwie, selbst wenn es umständlich wird, einfach alles mögliche probieren, ich hänge zum teil 2 Tage vor Sturheit an einer Kleinigkeit, bevor ich aufgebe.
Schau dich hier um
http://www.rsbasic.de/winapi-library/
Da findest bestimmt was, mit dem es irgendwie geht.