Hi,
gibts eine Möglichkeit, bei den Buttons in Scite jeweils einen für "Script starten" (Grünes Dreieck) und "Script stoppen" (Rotes Viereck) einzufügen?
Im Visual Basic Editor gibts auch sowas
Danke & Gruß,
x0r
Hi,
gibts eine Möglichkeit, bei den Buttons in Scite jeweils einen für "Script starten" (Grünes Dreieck) und "Script stoppen" (Rotes Viereck) einzufügen?
Im Visual Basic Editor gibts auch sowas
Danke & Gruß,
x0r
Das wird nicht so ganz einfach möglich sein schätze ich mal. Entweder du nutzt die Built-In Funktionen (TrayMenu - Script Pause) oder du gehst da extern an die Sache ran.
Starten ist ja ganz einfach, du kannst alle Funktionen in eine Hauptfunktion packen und sie per Button triggern allerdings wird das Stoppen ohne dem Script Pause nicht so einfach.
Dafür bietet sich eigentlich (wenn du die Built-In Funktionen halt nicht nutzen willst) NtSuspendThread an. Die kannst du in einer externen Anwendung callen und dein AutoIt Thread freezen.
Mit NtResumeThread kannst du den Thread wieder fortsetzen.
Das klingt nicht gut.
Über "Tools -> Stop" isses etwas umständlich und strg+break eigentlich auch, da lauf ich halt Gefahr, dass ich sonst noch irgendwas kille (hab die Angewohnheit drauf rumzuhämmern)
Wäre fein gewesen, mit "Start" und "Stop"-Buttons
Kannst natürlich ein Programm schreiben, dass dir bei Scite die Buttons zeichnet... wäre etwas komplizierter, aber möglich (mit scite als parentwindow,...). Bei klick kann dann ja die tastenkombination an scite gesendet werden :).
_winapi_setparent oder so kann beim erstellen der buttons helfen
Hatte gerade etwas zeit und habs umgesetzt. Wenn du jetzt die datei startest wird scite mit dem button geöffnet. (Button=Frabigeslabel oben in der Leiste). Für weitere funktionen,... kannst du das ja noch umbauen
Das Programm sucht alle Fenster, die dann offen sind und gibt denen den Button. Das Programm beendet sich, wenn alle Fenster geschlossen werden (Scite mit mehreren Fenstern).
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <WinAPIProc.au3>
#include <array.au3>
Opt("GuiOnEventMode",1)
$pid=Run('C:\Program Files (x86)\AutoIt3\SciTE\SciTE.exe')
while UBound(ProcessGetWindow($pid))=0
WEnd
$wins=ProcessGetWindow($pid)
global $winList[UBound($wins)][4]
for $i=0 to UBound($wins)-1 step 1
$winList[$i][0]=$wins[$i]
$pos=WinGetPos($winList[$i][0])
_ArrayDisplay($pos)
$winList[$i][1]=GUICreate("",30,30,400,-40,$WS_POPUP,$WS_EX_MDICHILD,$winList[$i][0]);$WS_POPUP
_WinAPI_SetParent($winList[$i][1],$winList[$i][0])
$winList[$i][2]=GUICtrlCreateLabel("",1,1,20,20)
GUICtrlSetBkColor(-1,0x00FF00)
GUICtrlSetOnEvent(-1,"labelPressed")
GUISetState(@SW_SHOW,$winList[$i][1])
$winList[$i][3]=false
_ArrayDisplay(WinGetPos($winList[$i][1]))
next
while 1
$run=false
for $i=0 to UBound($winList)-1 step 1
if WinExists($winList[$i][0]) then
$run=true
endif
next
if NOT $run then
Exit
endif
WEnd
Func labelPressed()
for $i=0 to UBound($winList)-1 step 1
if @GUI_CtrlId=$winList[$i][2] then
if $winList[$i][3] then
WinActivate($winList[$i][0])
Send("^{Break}")
GUICtrlSetBkColor($winList[$i][2],0x00FF00)
$winList[$i][3]=false
else
WinActivate($winList[$i][0])
Send("{F5}")
GUICtrlSetBkColor($winList[$i][2],0xFF0000)
$winList[$i][3]=true
endif
endif
next
EndFunc
Func ProcessGetWindow($PId)
If IsNumber($PId) = 0 Or ProcessExists($PId) = 0 Then
SetError(1)
Else
Local $WinList = WinList()
Local $i = 1
Local $Windows[0]
for $i=0 to UBound($WinList)-1 step 1
If WinGetProcess($WinList[$i][0], "") = $PId Then
if $WinList[$i][0]<>"" and $WinList[$i][0]<>"DirectorExtension" then
ReDim $Windows[UBound($Windows)+1]
$Windows[UBound($Windows)-1] = $WinList[$i][1]
endif
Else
$i += 1
EndIf
Next
Return $Windows
EndIf
EndFunc ;==>ProcessGetWindow
Alles anzeigen
Ich hoffe, das ist es, was du wolltest
Boah Alter!
Ich muss das erstmal Zuhause testen, hab hier kein, bzw kann kein neues AutoIt installieren (wegen der WinAPIProc.au3?).
Aber wenns funktioniert: GOIL!!!
Danke dir,
x0r
Bei mir scheint es zu funktionieren. Nur die Position ist halt falsch aber sonst astrein.
läuft auch, muss das teil nur noch bissl verschieben, dann hauts hin.
danke!