und poste doch bitte den Code im Quellcode-Tag.
so ist er falsch eingerückt.
Beiträge von Alcros
-
-
wie wärs mit
[autoit]GUIGetCursorInfo() ; und
[/autoit]
_GDIPlus_GraphicsDrawImageRect -
du kannst in deiner Situation auch mit
[autoit]_Singleton ; Guck dir den 2ten Parameter an
[/autoit]
arbeiten
Deine Lösung sollte evtl. auch funktionieren, kann man aber nicht testen , weil Fuktionen fehlen. -
habs mal im Spoiler den Aourcecode hinzugefügt
-
@Joritktos : stimmt, hab ich mal geändert
-
huhu,
ich hab mir mal gedacht, weil ich gerne auch Syntax Highlighting + Calltips für meine eigenen Funktinen/UDFs haben möchte, dass ich dazu ein Programm schreibe.
Man kann damit eigene Calltips und Syntax-Highlights erstellen.
Der Vorteil ist, dass man z.B. seine eigenen UDFs von den Standard-UDFs unterscheiden kann
(Ich kann z.B. eine Funktion so darstellen, als wäre es eine ganz normale AutoIt-Funktion.)Viel Spaß damit !
Feedback ist natürlich erwünscht !mfg Alcros
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIListView.au3>
Opt("GUIOnEventMode", 1)
Global $idG, $idGListView, $idGSpeichernB, $idGLogL, $idGNameI, $idGParameterI, $idGBeschreibungI, $idGTypC, $idGLoeschenB, $idGAendernB, $idGNeuB, $idGAboutL
Global $aTexte[6] = [0,"au3.CalltipsUndSyntax.functions=", "au3.CalltipsUndSyntax.keywords=", "au3.CalltipsUndSyntax.macros=", "au3.CalltipsUndSyntax.preprocessor=", "au3.CalltipsUndSyntax.udfs="]
Global $bSaved = True
if (@OSVersion = "WIN_XP") Then
Global $sPath = @MyDocumentsDir
Else
Global $sPath = @UserProfileDir
EndIf_StartCheck()
[/autoit] [autoit][/autoit] [autoit]
_GUI()
_GetList()
GUISetState(@SW_SHOW)
_SetLog("Programm erfolgreich geladen.", "green")While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEnd#region Funktionen
[/autoit] [autoit][/autoit] [autoit]
Func _GetList()
Local $sFile = FileRead($sPath&"\au3.CalltipsUndSyntax.api")
Local $aSplit = StringSplit($sFile, @CRLF,1)
if @error And $sFile="" Then Return
Local $iZaehler
For $iZaehler = 1 To UBound($aSplit)-1
Local $aTemp = StringRegExp($aSplit[$iZaehler], "(.+?) \((.*?)\) (.+?):(.+)",3)
GUICtrlCreateListViewItem($aTemp[0]&"|"&$aTemp[1]&"|"&$aTemp[2]&"|"&$aTemp[3], $idGListView)
Next
EndFunc
Func _StartCheck()
Local $sFile = FileRead($sPath & "\SciTEUser.properties")
if @error Then
$sPath = FileOpenDialog("Bitte Verzeichnis zur SCiTEUser.properties angeben.",$sPath, "SCiTE Profil (*.properties)")
if @error Then Exit MsgBox(16,"","Die Datei SciTEUser konnte nicht geöffnet werden."&@CRLF&"Skript wird beendet.",10000)
$sPath = StringTrimRight($sPath,StringLen($sPath) - StringInStr($sPath, "\", 0, -1) + 1)
EndIf
Local $sPattern = "import au3.CalltipsUndSyntax"
if Not StringRegExp($sFile, $sPattern) Then
Local $iMsgBoxAnswer = MsgBox(292, "Skript installieren ?", "Einträge in SciteUser eintragen ?")
If ($iMsgBoxAnswer = 7) Then
MsgBox(0,"Ende","Skript wird beendet.",5000)
Exit
EndIf
Local $sText
if (StringRight($sFile,2)<>@CRLF) Then $sText &= @CRLF
$sText &= "import au3.CalltipsUndSyntax"&@CRLF&"import au3.CalltipsUndSyntax.api"&@CRLF&"keywords8.$(au3)=$(au3.keywords.udfs) $(au3.keywords.user.udfs) $(au3.CalltipsUndSyntax.udfs)"&@CRLF&"api.$(au3)=$(SciteDefaultHome)\api\au3.api;$(SciteDefaultHome)\api\au3.autoit3wrapper.api;$(SciteUserHome)\au3.user.calltips.api;$(SciteUserHome)\au3.CalltipsUndSyntax.api"&@CRLF&"keywords.$(au3)=$(au3.keywords.keywords) $(au3.CalltipsUndSyntax.keywords)"&@CRLF&"keywords2.$(au3)=$(au3.keywords.functions) $(au3.CalltipsUndSyntax.functions)"&@CRLF&"keywords3.$(au3)=$(au3.keywords.macros) $(au3.CalltipsUndSyntax.macros)"&@CRLF&"keywords5.$(au3)=$(au3.keywords.preprocessor) $(au3.CalltipsUndSyntax.preprocessor)"
FileWrite($sPath&"\SciTEUser.properties",$sText)
EndIf
EndFunc
Func _OEidGSpeichernB()
Local $aTexteFile = $aTexte
Local $iZaehler
For $iZaehler = 0 To _GUICtrlListView_GetItemCount($idGListView) - 1
Local $aItemText = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
if ($aItemText[3] = "Funktion") Then $aTexteFile[1] &= StringLower($aItemText[1] & " ")
if ($aItemText[3] = "Schlüsselwort") Then $aTexteFile[2] &= StringLower($aItemText[1] & " ")
if ($aItemText[3] = "Makro") Then $aTexteFile[3] &= StringLower($aItemText[1] & " ")
if ($aItemText[3] = "Präprozessor") Then $aTexteFile[4] &= StringLower($aItemText[1] & " ")
if ($aItemText[3] = "UDFs") Then $aTexteFile[5] &= StringLower($aItemText[1] & " ")
Next
Local $sWriteToFile
For $iZaehler=1 To UBound($aTexteFile)-1
$sWriteToFile &= $aTexteFile[$iZaehler] & @CRLF
Next
$sWriteToFile = StringTrimRight($sWriteToFile,2)Local $hFile = FileOpen($sPath & "\au3.CalltipsUndSyntax.properties",2)
[/autoit] [autoit][/autoit] [autoit]
FileWrite($hFile, $sWriteToFile)
FileClose($hFile)Local $sWriteToFile = ""
[/autoit] [autoit][/autoit] [autoit]
For $iZaehler=0 To _GUICtrlListView_GetItemCount($idGListView) - 1
Local $aItemText = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
$sWriteToFile &= $aItemText[1] & " (" & $aItemText[2] &") " & $aItemText[3] & ":" & $aItemText[4] & @CRLF
Next
$sWriteToFile = StringTrimRight($sWriteToFile,2)Local $hFile = FileOpen($sPath & "\au3.CalltipsUndSyntax.api",2)
[/autoit] [autoit][/autoit] [autoit]
FileWrite($hFile, $sWriteToFile)
FileClose($hFile)_SetLog("Funktionen wurden gespeichert.","green")
[/autoit]
$bSaved = True
EndFunc ;==>_OEidGSpeichernB
Func _OEidGNeuB()
Local $sName = GUICtrlRead($idGNameI)
Local $sParam = GUICtrlRead($idGParameterI)
Local $sTyp = GUICtrlRead($idGTypC)
Local $sBeschreibung = GUICtrlRead($idGBeschreibungI)
If ($sName = "" Or $sTyp = "" Or $sBeschreibung = "") Then
_SetLog("Sie müssen alle Felder ausfüllen", "red")
GUICtrlSetState($idGNameI, $GUI_FOCUS)
Return 0
EndIf
Local $iZaehler
For $iZaehler = 0 To _GUICtrlListView_GetItemCount($idGListView) - 1
Local $aName = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
If ($sName = $aName[1]) Then ExitLoop
Next
If ($iZaehler <= _GUICtrlListView_GetItemCount($idGListView) - 1) Then
_SetLog("Eine Funktion mit diesem Namen existiert bereits.", "red")
GUICtrlSetState($idGNameI, $GUI_FOCUS)
Return 0
EndIf
GUICtrlCreateListViewItem($sName & "|" & $sParam & "|" & $sTyp & "|" & $sBeschreibung, $idGListView)
_SetLog("Funktion " & $sName & " wurde erfolgreich hinzugefügt. Drücken Sie Speichern.", "green")
$bSaved = False
EndFunc ;==>_OEidGNeuB
Func _OEidGAendernB()
Local $sName = GUICtrlRead($idGNameI)
Local $sParam = GUICtrlRead($idGParameterI)
Local $sTyp = GUICtrlRead($idGTypC)
Local $sBeschreibung = GUICtrlRead($idGBeschreibungI)
If ($sName = "" Or $sTyp = "" Or $sBeschreibung = "") Then
_SetLog("Sie müssen alle Felder ausfüllen", "red")
GUICtrlSetState($idGNameI, $GUI_FOCUS)
Return 0
EndIf
Local $iZaehler
For $iZaehler = 0 To _GUICtrlListView_GetItemCount($idGListView) - 1
Local $aName = _GUICtrlListView_GetItemTextArray($idGListView, $iZaehler)
If ($sName = $aName[1]) Then ExitLoop
Next
If ($iZaehler <= _GUICtrlListView_GetItemCount($idGListView) - 1) Then
_SetLog("Eine Funktion mit diesem Namen existiert bereits.", "red")
GUICtrlSetState($idGNameI, $GUI_FOCUS)
Return 0
EndIf
Local $iSelected = _GUICtrlListView_GetSelectedIndices($idGListView)
If ($iSelected = "") Then Return _SetLog("Sie müssen erst eine Funktion auswählen.", "red")
_GUICtrlListView_SetItemText($idGListView, $iSelected, $sName, 0)
_GUICtrlListView_SetItemText($idGListView, $iSelected, $sParam, 1)
_GUICtrlListView_SetItemText($idGListView, $iSelected, $sTyp, 2)
_GUICtrlListView_SetItemText($idGListView, $iSelected, $sBeschreibung, 3)
_SetLog("Funktion " & $sName & " wurde erfolgreich geändert.Drücken sie Speichern.", "green")
$bSaved = False
EndFunc ;==>_OEidGAendernB
Func _OEidGLoeschenB()
Local $iSelected = _GUICtrlListView_GetSelectedIndices($idGListView)
If ($iSelected = "") Then Return _SetLog("Sie müssen erst eine Funktion auswählen.", "red")
Local $aName = _GUICtrlListView_GetItemTextArray($idGListView, $iSelected - 1)
_GUICtrlListView_DeleteItem($idGListView, $iSelected)
_SetLog("Funktion " & $aName[1] & " wurde erfolgreich gelöscht.Drücken sie Speichern.", "green")
$bSaved = False
EndFunc ;==>_OEidGLoeschenB
Func _exit()
If Not $bSaved Then
Local $iMsgBoxAnswer = MsgBox(292, "Wirklich beenden ?", "Es wurden noch nicht alle Änderungen gespeichert." & @CRLF & "Wollen sie wirklich beenden")
If ($iMsgBoxAnswer = 7) Then Return 0
EndIf
Exit
EndFunc ;==>_exit
Func _SetLog($sText, $sColour = "white")
If ($sColour = "white") Then $sColour = 0xFFFFFF
If ($sColour = "red") Then $sColour = 0xFF0000
If ($sColour = "green") Then $sColour = 0x00FF00
GUICtrlSetData($idGLogL, $sText)
GUICtrlSetBkColor($idGLogL, $sColour)
Return 0
EndFunc ;==>_SetLog
Func _GUI() ; Erstellung der GUI
#region ### START Koda GUI section ### Form=d:\programmieren\programm\koda_1.7.0.1\forms\calltips ush.kxf
$idG = GUICreate("Calltips und Syntax-Highlighting", 1125, 482, 189, 109)
$idGListView = GUICtrlCreateListView("Name|Parameter|Typ|Beschreibung", 8, 64, 1113, 385)
GUICtrlSendMsg(-1, 0x101E, 0, 150)
GUICtrlSendMsg(-1, 0x101E, 1, 200)
GUICtrlSendMsg(-1, 0x101E, 2, 100)
GUICtrlSendMsg(-1, 0x101E, 3, 650)
$idGLogL = GUICtrlCreateLabel("idGLogL", 8, 456, 940, 17)
$idGNameI = GUICtrlCreateInput("Name", 8, 40, 217, 21)
$idGParameterI = GUICtrlCreateInput("z.B. Nummer, Zahl", 232, 40, 201, 21)
$idGTypC = GUICtrlCreateCombo("", 440, 40, 89, 25, 3) ; $CBS_DROPDOWNLIST
GUICtrlSetData(-1, "Funktion|Schlüsselwort|Makro|Präprozessor|UDFs")
GUICtrlSetData(-1, "UDFs")
$idGBeschreibungI = GUICtrlCreateInput("Beschreibung", 536, 40, 585, 21)
$idGNeuB = GUICtrlCreateButton("Neu", 648, 4, 113, 25, 0)
$idGAendernB = GUICtrlCreateButton("Ändern", 768, 4, 113, 25, 0)
$idGLoeschenB = GUICtrlCreateButton("Löschen", 888, 4, 113, 25, 0)
$idGSpeichernB = GUICtrlCreateButton("Speichern", 1008, 4, 113, 25, 0)
$idGAboutL = GUICtrlCreateLabel("© Made by Alcros (http://www.autoit.de)", 952, 456, 166, 17)
#endregion ### END Koda GUI section ###
GUISetOnEvent(-3, "_exit") ; $GUI_EVENT_CLOSE
GUICtrlSetOnEvent($idGNeuB, "_OEidGNeuB")
GUICtrlSetOnEvent($idGAendernB, "_OEidGAendernB")
GUICtrlSetOnEvent($idGLoeschenB, "_OEidGLoeschenB")
GUICtrlSetOnEvent($idGSpeichernB, "_OEidGSpeichernB")
EndFunc ;==>_GUI
#endregion Funktionen -
hier mal richtig formatiert :
Spoiler anzeigen
[autoit]Dim $registry[5] = ["HKLM", "HKCU", "HKU", "HKCR", "HKCC"]
[/autoit]
If StringInStr(@CPUArch, "64") Then Dim $registry[5] = ["HKLM64", "HKCU64", "HKU64", "HKCR64", "HKCC64"]
$counts = 1
$length = UBound($registry)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $length = ' & $length & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Do
For $i = $counts To $length
$c = 1
While 1 ;Subkeys
$newdata = RegEnumKey($registry[$counts], $c)
If @error Then ExitLoop
_ArrayAdd($registry, $registry[$counts] & "/" & $newdata)
;ConsoleWrite($registry[$counts]&"/"&$newdata&@CRLF)
$c = $c + 1
WEnd
$counts = $counts + 1
Next
$length = UBound($registry) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $length = ' & $length & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $counts = ' & $counts & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Until $counts == $length -
ich schätze mal, dass du vergessen hast , die Dateiendung mit anzugeben
-
so funktioniert es (bei mir ) :
Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]
Opt('MustDeclareVars', 1)Global $Gui0, $btStartStop, $lbSnooze, $aChild[2] = [1]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $TimerStart, $iTime, $EngineRun = 0, $iSnooze = 0_Create_Gui_0()
[/autoit] [autoit][/autoit] [autoit]
_CreateChild($aChild[1])
GUISetState(@SW_SHOW, $Gui0)
GUISetState(@SW_SHOWNOACTIVATE, $aChild[1]) ; <=== Sowie das Child angezeigt wird, werden die Events ($GUI_EVENT_PRIMARYDOWN & $GUI_EVENT_PRIMARYUP) nicht mehr erkannt
GUISwitch($Gui0)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _Create_Gui_0()
[/autoit] [autoit][/autoit] [autoit]
$Gui0 = GUICreate('Engine OFF', 400, 450)
$lbSnooze = GUICtrlCreateLabel('SNOOZE', 280, 150)
GUICtrlSetState(-1, $GUI_HIDE)
$btStartStop = GUICtrlCreateButton('0 / I', 90, 280, 210, 25)GUICtrlCreateLabel('Button 1,5 sec gedrückt halten für Start / Stopp.' & @LF & 'Wenn gestartet mit kurzem Druck "SNOOZE" de/aktivieren.', 50, 310)
[/autoit] [autoit][/autoit] [autoit]; == Events
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, '_close_Gui0', $Gui0)
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_MDown', $Gui0)
GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_MUp', $Gui0)
EndFunc ;==>_Create_Gui_0Func _CreateChild(ByRef $_hWnd)
[/autoit] [autoit][/autoit] [autoit]
$_hWnd = GUICreate('', 254, 130, 70, 60, 0x80000000, 0x00000040, $Gui0) ; WS_POPUP = 0x80000000, WS_EX_MDICHILD = 0x00000040
GUISetBkColor(0x06A533, $_hWnd)
EndFunc ;==>_CreateChildFunc _MDown()
[/autoit] [autoit][/autoit] [autoit]
Local $aInfo = GUIGetCursorInfo()
If Not IsArray($aInfo) Then Return
If $aInfo[4] = $btStartStop Then
$TimerStart = TimerInit()
AdlibRegister('_StartEngine')
EndIf
EndFunc ;==>_MDownFunc _MUp()
[/autoit] [autoit][/autoit] [autoit]
Local $aInfo = GUIGetCursorInfo()
If Not IsArray($aInfo) Then Return
Local $iState = $GUI_SHOW
If $aInfo[4] = $btStartStop Then
If $iTime <= 400 And $EngineRun = 1 Then
If $iSnooze = 0 Then
$iSnooze = 1
Else
$iState = $GUI_HIDE
$iSnooze = 0
EndIf
GUICtrlSetState($lbSnooze, $iState)
AdlibUnRegister('_StartEngine')
ElseIf $iTime <= 1500 And $EngineRun = 0 Then
AdlibUnRegister('_StartEngine')
EndIf
EndIf
EndFunc ;==>_MUpFunc _StartEngine()
[/autoit] [autoit][/autoit] [autoit]
$iTime = TimerDiff($TimerStart)
Local $iState = $GUI_SHOW, $aTitle[2] = ['Engine OFF','Engine ON']
If $iTime >= 1500 And $iSnooze = 0 Then
$EngineRun = Not $EngineRun
Beep(1700)
AdlibUnRegister('_StartEngine')
WinSetTitle($Gui0, '', $aTitle[$EngineRun])
EndIf
EndFunc ;==>_StartEngineFunc _close_Gui0()
[/autoit]
Exit
EndFunc
hab einfach ein GUISwitch nach dem Anzeigen des Child-Fensters hinzugefügt.mfg Alcros
-
ja, laut HIlfeeintrag :
Das zu prüfende Verzeichnis oder die zu prüfende Datei. -
du soltlest den @error überprüfen !
Wenn du dir die Funktion aus der UDF mal angukcst, wirst du merken, dass da am Anfang ein FileOpen steht... -
die erste Zeile ist Zeile 1.
[autoit]
Du hast Zeile 0 stehen.
In Zeile 31 soltest du $readZeile vergleichen
und in Zeile 35GUICtrlSetData($edit, GUICtrlRead($edit) & $readZeile)
[/autoit]
benutzen -
das Killen des Programms kannstu du so machen :
[autoit]$iPID = Run("test.exe")
[/autoit]
ProcessClose($iPID)Zum anderen, hab ich grad nix zum Testen da.
[autoit]
Aber wichtig ist , dass du die prozesse mit Run in deinem Skript als Child startest (guck dir die Hilfe zuStdOutRead
[/autoit]
an)Edit bezüglich deinem Edit :
[autoit]$readZeile = FileReadLine($datei, 1)
[/autoit]
Warum liest du immer Zeile 1 aus ? -
gewöhne dir an Code richtig eizurücken bitte (in Scite mit Strg+T)
ich halt mich mal zurück , bei so vielen PixelGetColourBefehlen...
-
Happy Birthday, Andy.
Feier schön -
jepp, dann funktioniert es, allerdings kann es passieren, dass ein anderes Skript ein Fenster mit gleichem Namen hat
-
Joriktos : Das wird nicht funktionieren, da auch bei der ersten Instanz des Scriptes ja der Prozess schon existiert.
-
bitte
dann geh doch beim ersten Post auf Bearbeiten und setz den Thread auf gelöst -
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Global $idGUI = GUICreate("Form1", 625, 443, 193, 125)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)
WinSetOnTop($idGUI, "",1)Do
[/autoit]
Until GUIGetMsg() = -3
Exit
funktiniert bei mir problemlos
geht sogar über Taskleiste und Tsk-Mager drüber, auch wenn der Immer im Vordergrund istP.S. hab Win7 Home Premium
-
wie wärs so etwa :
[autoit]#include <Misc.au3>
[/autoit][autoit][/autoit][autoit]if (_Singleton(@ScriptName, 1) = 0) Then
[/autoit]
$aWinList = WinList("Hier der Fenstertitel")
Local $iZaehler
For $iZaehler=1 To UBound($aWinList)-1
if (WinGetProcess($aWinList[$iZaehler][1]) <> @AutoItPID) Then
WinSetState($aWinList[$iZaehler][1],"",@SW_SHOW)
WinActivate($aWinList[$iZaehler][1])
Exit
EndIf
Next
EndIf