by Milchmann » 14 Jan 2021, 01:44
Danke dir, mit dem Snippingtool funktioniert es super.
Jetzt habe ich danke dir eine komplette Funktion zum auslesen und bearbeiten der Windowstoolbox.
Jetzt teste ich das Java Programm.
Das funktioniert auch super , hat aber ein Problem mit
Code: Select all
VarSetCapacity(TBBTX, TBBTX_Size, 0)
dort braucht er bei jeder Abfrage ca. 10 Sekunden, siehe Log unten. Kann man das noch ändern?
Code: Select all
SendMessage,0x0417,A_Index - 1,RMEM,,ahk_id %HTB%
143: if (ErrorLevel = 1)
144: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTN, "UPtr", TBBTN_Size, "Ptr", 0)
145: ID := NumGet(TBBTN, 4, "Int")
146: SendMessage,TB_GETBUTTONTEXT,ID,RMEM,,ahk_id %HTB%
147: TXL := (ErrorLevel = "FAIL" ? -1 : ErrorLevel)
148: if (TXL > 0)
149: TBBTX_Size := ++TXL * TCL
150: VarSetCapacity(TBBTX, TBBTX_Size, 0) (10.06)
151: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTX, "UPtr", TBBTX_Size, "Ptr", 0)
152: TX := StrGet(&TBBTX, TXL)
153: }
154: SendMessage,0x0433,ID,RMEM,,ahk_id %HTB%
155: if (ErrorLevel)
156: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &RECT, "UPtr", 16, "Ptr", 0)
157: X := NumGet(RECT, 0, "Int")
158: Y := NumGet(RECT, 4, "Int")
159: W := NumGet(RECT, 8, "Int") - X
160: H := NumGet(RECT, 12, "Int") - Y
161: }
162: }
164: ToolbarBtns[A_Index] := {ID: ID, TX: TX, X: X, Y: Y, W: W, H: H}
165: }
140: ID := 0, X := 0, Y := 0, W := 0, H := 0
141: TX := ""
142: SendMessage,0x0417,A_Index - 1,RMEM,,ahk_id %HTB%
143: if (ErrorLevel = 1)
144: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTN, "UPtr", TBBTN_Size, "Ptr", 0)
145: ID := NumGet(TBBTN, 4, "Int")
146: SendMessage,TB_GETBUTTONTEXT,ID,RMEM,,ahk_id %HTB%
147: TXL := (ErrorLevel = "FAIL" ? -1 : ErrorLevel)
148: if (TXL > 0)
149: TBBTX_Size := ++TXL * TCL
150: VarSetCapacity(TBBTX, TBBTX_Size, 0) (10.59)
151: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTX, "UPtr", TBBTX_Size, "Ptr", 0)
152: TX := StrGet(&TBBTX, TXL)
153: }
154: SendMessage,0x0433,ID,RMEM,,ahk_id %HTB%
155: if (ErrorLevel)
156: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &RECT, "UPtr", 16, "Ptr", 0)
157: X := NumGet(RECT, 0, "Int")
158: Y := NumGet(RECT, 4, "Int")
159: W := NumGet(RECT, 8, "Int") - X
160: H := NumGet(RECT, 12, "Int") - Y
161: }
162: }
164: ToolbarBtns[A_Index] := {ID: ID, TX: TX, X: X, Y: Y, W: W, H: H}
165: }
140: ID := 0, X := 0, Y := 0, W := 0, H := 0
141: TX := ""
142: SendMessage,0x0417,A_Index - 1,RMEM,,ahk_id %HTB%
143: if (ErrorLevel = 1)
144: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTN, "UPtr", TBBTN_Size, "Ptr", 0)
145: ID := NumGet(TBBTN, 4, "Int")
146: SendMessage,TB_GETBUTTONTEXT,ID,RMEM,,ahk_id %HTB%
147: TXL := (ErrorLevel = "FAIL" ? -1 : ErrorLevel)
148: if (TXL > 0)
149: TBBTX_Size := ++TXL * TCL
150: VarSetCapacity(TBBTX, TBBTX_Size, 0) (9.61)
151: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTX, "UPtr", TBBTX_Size, "Ptr", 0)
152: TX := StrGet(&TBBTX, TXL)
153: }
Ich gebe dir noch eine Rückmeldung.
Bert
Danke dir, mit dem Snippingtool funktioniert es super.
Jetzt habe ich danke dir eine komplette Funktion zum auslesen und bearbeiten der Windowstoolbox. :bravo:
Jetzt teste ich das Java Programm.
Das funktioniert auch super , hat aber ein Problem mit
[code]VarSetCapacity(TBBTX, TBBTX_Size, 0)[/code]
dort braucht er bei jeder Abfrage ca. 10 Sekunden, siehe Log unten. Kann man das noch ändern?
[code]SendMessage,0x0417,A_Index - 1,RMEM,,ahk_id %HTB%
143: if (ErrorLevel = 1)
144: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTN, "UPtr", TBBTN_Size, "Ptr", 0)
145: ID := NumGet(TBBTN, 4, "Int")
146: SendMessage,TB_GETBUTTONTEXT,ID,RMEM,,ahk_id %HTB%
147: TXL := (ErrorLevel = "FAIL" ? -1 : ErrorLevel)
148: if (TXL > 0)
149: TBBTX_Size := ++TXL * TCL
150: VarSetCapacity(TBBTX, TBBTX_Size, 0) (10.06)
151: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTX, "UPtr", TBBTX_Size, "Ptr", 0)
152: TX := StrGet(&TBBTX, TXL)
153: }
154: SendMessage,0x0433,ID,RMEM,,ahk_id %HTB%
155: if (ErrorLevel)
156: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &RECT, "UPtr", 16, "Ptr", 0)
157: X := NumGet(RECT, 0, "Int")
158: Y := NumGet(RECT, 4, "Int")
159: W := NumGet(RECT, 8, "Int") - X
160: H := NumGet(RECT, 12, "Int") - Y
161: }
162: }
164: ToolbarBtns[A_Index] := {ID: ID, TX: TX, X: X, Y: Y, W: W, H: H}
165: }
140: ID := 0, X := 0, Y := 0, W := 0, H := 0
141: TX := ""
142: SendMessage,0x0417,A_Index - 1,RMEM,,ahk_id %HTB%
143: if (ErrorLevel = 1)
144: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTN, "UPtr", TBBTN_Size, "Ptr", 0)
145: ID := NumGet(TBBTN, 4, "Int")
146: SendMessage,TB_GETBUTTONTEXT,ID,RMEM,,ahk_id %HTB%
147: TXL := (ErrorLevel = "FAIL" ? -1 : ErrorLevel)
148: if (TXL > 0)
149: TBBTX_Size := ++TXL * TCL
150: VarSetCapacity(TBBTX, TBBTX_Size, 0) (10.59)
151: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTX, "UPtr", TBBTX_Size, "Ptr", 0)
152: TX := StrGet(&TBBTX, TXL)
153: }
154: SendMessage,0x0433,ID,RMEM,,ahk_id %HTB%
155: if (ErrorLevel)
156: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &RECT, "UPtr", 16, "Ptr", 0)
157: X := NumGet(RECT, 0, "Int")
158: Y := NumGet(RECT, 4, "Int")
159: W := NumGet(RECT, 8, "Int") - X
160: H := NumGet(RECT, 12, "Int") - Y
161: }
162: }
164: ToolbarBtns[A_Index] := {ID: ID, TX: TX, X: X, Y: Y, W: W, H: H}
165: }
140: ID := 0, X := 0, Y := 0, W := 0, H := 0
141: TX := ""
142: SendMessage,0x0417,A_Index - 1,RMEM,,ahk_id %HTB%
143: if (ErrorLevel = 1)
144: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTN, "UPtr", TBBTN_Size, "Ptr", 0)
145: ID := NumGet(TBBTN, 4, "Int")
146: SendMessage,TB_GETBUTTONTEXT,ID,RMEM,,ahk_id %HTB%
147: TXL := (ErrorLevel = "FAIL" ? -1 : ErrorLevel)
148: if (TXL > 0)
149: TBBTX_Size := ++TXL * TCL
150: VarSetCapacity(TBBTX, TBBTX_Size, 0) (9.61)
151: DllCall("ReadProcessMemory", "Ptr", HPROC, "Ptr", RMEM, "Ptr", &TBBTX, "UPtr", TBBTX_Size, "Ptr", 0)
152: TX := StrGet(&TBBTX, TXL)
153: }[/code]
Ich gebe dir noch eine Rückmeldung.
Bert