Wir haben in H&U ein Unterforum Datenbanken.
Lies dich dort einmal durch. Dort wirst du einiges an Bsp. finden.
Beiträge von BugFix
-
-
Also ich finde, wenn Kastln für Häkchen da sind, sollte man sie auch verwenden können. Meine ich.
Eine sehr eigenwillige Betrachtungsweise.
Wenn der Programmierer ( in diesem Falle also ich
), das Checkbox-Ctrl ausschließlich als Anzeigeelement für einen Status verwendet, dann ist das legitim. Wo steht denn geschrieben, dass der User alle Funktionen eines Controls anwenden darf. 
Dann müßtest du eigentlich auch den ReadOnly-Status der Inputs monieren...
-
Wo möchtest du einen Farbverlauf erzeugen? Titelbar, Control, GUI...?
Grundsätzlich: Ja, es geht. Du kannst mit GDI+ zeichnen. Hängt dann vom verwendeten Brush ab. -
geht das auch wen jemand kein autoit besitzt ?
weil es soll so funktionieren
Welchen Sinn soll denn das Ausführen von AutoIt-Befehlen außerhalb der AutoIt-Umgebung haben? Was soll das werden? -
Es geht auch anders.
Aber du hattest dir eine Endlosschleife gebaut.
Was soll die zählergesteuerte Schleife innerhalb einer Endlosschleife. ?So gehts:
[autoit]$befehl = 'For $a = 1 to 99' & @CRLF & _
[/autoit]
'Tooltip ($a,0,0)' & @CRLF & _
'Sleep(20)' & @CRLF & _
'Next'
FileWrite(@TempDir & "\temp.script.au3", $befehl)
RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\temp.script.au3"')
FileDelete(@TempDir & "\temp.script.au3") -
Neues Bsp. in Post 1: Input Check Floatwert
-
Meines Erachtens reicht es völlig, wenn du ein Array für alle Button verwendest.
[autoit]
Weise allen Button beim Erstellen dasselbe Event zu. Auswertung wie folgt:For $i = 0 To UBound($aButton) -1
[/autoit][autoit][/autoit][autoit]
$aButton[$i] = GUICtrlCreateButton(...)
GUICtrlSetOnEvent(-1, '_btnClick')
NextFunc _btnClick()
[/autoit]
Switch @GUI_CtrlId
Case $aButton[0]
; Code
Case $aButton[1]
; ...
EndSwitch
EndFunc -
Tolle Idee, aber irgendwie kann ich die Atribute nicht anklicken.
Das sollst du ja auch nicht können.
Dazu hast du den Fontauswahl-Button. Dort wählst du den Font mit den gewünschten Attributen.Zitat von Depreeddie breite und die höhe muss man doch gar nicht mit angeben oder?
Statt Höhe und Breite reicht es doch aus -1 hinzuschreiben !?!Un wie platzierst du dann ein Element daneben, ohne zu wissen, wo das vorige aufhört..

-
Führe einfach das Bsp.-Skript zu _WinAPI_CallNextHookEx() aus. Dann kannst du alle Tasten drücken und den Code auslesen.
-
Aber wie schaut es aus bei Änderungsmeldung oder Überwasserfahrzeug bzw. Örtlichkeiten. Da werden dann die ersten beiden Buchstaben große geschrieben. Hier wäre es schön, wenn nur der erste Buchstabe groß ist, der zweite dann klein.
Auch das läßt sich realisieren, werde ich vllt. noch ergänzen.Habe jetzt erst mal noch ein zusätzliches Bsp. eingefügt, dass den Hook auf eine GUI beschränkt. s. Post 1
-
Wie kommunizieren die beiden Computer miteinander.
Kannst du alles hier nachlesen.kann man das nicht mit Autoit?
Macht keinen Sinn in AutoIt. Ist dazu viel zu langsam. Und hier gilt auch: Wozu das Fahrrad neu erfinden, wenn das Auto umsonst zu kriegen ist.
-
Wie kann man es so machen, dass es fast zeitgleich übertragen wird?

Du wirst immer eine nicht unerhebliche Verzögerung mit solch einer Methode haben.
Verwende doch einfach TeamViewer. -
Hi,
hier mal ein Bsp. wie man mittels Hook Umlaute und ß abfängt und durch ae... bzw ss ersetzt.Der Hook ist systemweit, also nicht auf ein Anwendungsfenster gerichtet.Edit:
Hab das Bsp. nochmal erweitert.
- Der Hook gilt jetzt nur für ein Ctrl. auf der GUI.
- Mit LShift wird ersetzt zu Ae, Oe, Ue und mit RShift/CapsLock zu AE, OE, UEEdit:
Ein weiteres Bsp.: Input Check
- In das Input können nur Ziffern und Punkt geschrieben werden (für Floatwerte)
- Komma wird zu Punkt gewandeltAuto Ersetzen
[autoit]#cs
[/autoit] [autoit][/autoit] [autoit]
Bsp. Auto-Ersetzen mit Hook
Umlaute und ß
linke Shift ergibt z.B. Ä-Ae, rechte Shift und CapsLock ergibt Ä-AE
Ä - Ae (AE) ä - ae
Ö - Oe (OE) ö - oe
Ü - Ue (UE) ü - ue
ß - ssHook ist nur wirksam für die GUI (Statusabfrage in der Schleife) und das benannte Ctrl.
[/autoit] [autoit][/autoit] [autoit]
#ce#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <StructureConstants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]
Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
Global $active = False, $isShift = False, $ctrl2Effect = 'Edit2' ; <== erfordert Classname !!_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $gui = GUICreate('Auto Ersetzen: Umlaute und "ß"', 400, 300)
GUICtrlCreateLabel('Im Input keine Ersetzung', 10, 10, 380)
GUICtrlCreateInput('', 10, 30, 380) ; Classname: Edit1 (Class: Edit, Ctrl: 1)
GUICtrlCreateLabel('Im Edit werden ersetzt: ä ==> ae ö ==> oe ü ==> ue ß ==> ss', 10, 60, 380)
Local $edit = GUICtrlCreateEdit('', 10, 80, 380, 210) ; Classname: Edit2 (Class: Edit, Ctrl: 2)
GUISetState()Do
[/autoit] [autoit][/autoit] [autoit]
If BitAND(WinGetState($gui),
And ControlGetFocus($gui) = $ctrl2Effect Then
$active = True
Else
$active = False
EndIf
Until GUIGetMsg() = -3
EndFuncFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc;===========================================================
[/autoit] [autoit][/autoit] [autoit]
; callback function
;===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS, $vkCode, $ret, $isCapsLock = 0
$ret = DllCall("user32.dll","long","GetKeyState","long", 0x14)
If $ret[0] Then $isCapsLock = 1
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
$vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
If $wParam = $WM_KEYDOWN Then
If $vkCode = 0xA0 Or $vkCode = 0xA1 Then
$isShift = True
EndIf
Switch $vkCode
Case 0xBA ; ü ==> ue
If $isShift Then
_keybd_event(0x55)
_keybd_event(0xA0, 0x2)
Else
_keybd_event(0x55)
EndIf
_keybd_event(0x45)
Return -1
Case 0xC0 ; ö ==>oe
If $isShift Then
_keybd_event(0x4F)
_keybd_event(0xA0, 0x2)
Else
_keybd_event(0x4F)
EndIf
_keybd_event(0x45)
Return -1
Case 0xDB ; ß ==> ss
If $isShift Or $isCapsLock Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
_keybd_event(0x53)
_keybd_event(0x53)
Return -1
Case 0xDE ; ä ==> ae
If $isShift Then
_keybd_event(0x41)
_keybd_event(0xA0, 0x2)
Else
_keybd_event(0x41)
EndIf
_keybd_event(0x45)
Return -1
EndSwitch
Else
Switch DllStructGetData($tKEYHOOKS, "flags")
Case 0x80, 0x81 ; 0x80= UP für 'normale' Tasten u. li. paarige, 0x81= UP für re. paarige
If $vkCode = 0xA0 Or $vkCode = 0xA1 Then $isShift = False ; LShift, RShift
EndSwitch
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFuncFunc _keybd_event($vkCode, $Flag=0)
[/autoit] [autoit][/autoit] [autoit]
DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', $Flag, 'ptr', 0)
EndFuncFunc OnAutoItExit()
[/autoit]
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFuncInput Check
[autoit]#cs
[/autoit] [autoit][/autoit] [autoit]
Bsp. Input-Check mit Hook
nur Ziffern und Punkt erlaubt, Komma wird zu PunktHook ist nur wirksam für die GUI (Statusabfrage in der Schleife) und das benannte Ctrl.
[/autoit] [autoit][/autoit] [autoit]
#ce#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <StructureConstants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]
Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
Global $active = False, $ctrl2Effect = 'Edit1' ; <== erfordert Classname !!_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $gui = GUICreate('Auto Ersetzen: Umlaute und "ß"', 400, 300)
GUICtrlCreateLabel('Im Input sind nur Ziffern und Punkt möglich, Komma wird zu Punkt', 10, 10, 380)
GUICtrlCreateInput('', 10, 30, 380) ; Classname: Edit1 (Class: Edit, Ctrl: 1)
GUICtrlCreateLabel('Im Edit kann frei geschrieben werden', 10, 60, 380)
Local $edit = GUICtrlCreateEdit('', 10, 80, 380, 210) ; Classname: Edit2 (Class: Edit, Ctrl: 2)
GUISetState()Do
[/autoit] [autoit][/autoit] [autoit]
If BitAND(WinGetState($gui),
And ControlGetFocus($gui) = $ctrl2Effect Then
$active = True
Else
$active = False
EndIf
Until GUIGetMsg() = -3
EndFuncFunc _Exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc;===========================================================
[/autoit] [autoit][/autoit] [autoit]
; callback function
;===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS, $vkCode, $aSafedKey[250]
For $i = 48 To 57 ; 0-9
$aSafedKey[$i] = 1
Next
$aSafedKey[188] = 1 ; ','
$aSafedKey[190] = 1 ; '.'
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
$vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
If $wParam = $WM_KEYDOWN Then
If Not $aSafedKey[$vkCode] Then
_keybd_event(0x0)
Return -1
ElseIf $vkCode = 0xBC Then
_keybd_event(0xBE)
Return -1
EndIf
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFuncFunc _keybd_event($vkCode, $Flag=0)
[/autoit] [autoit][/autoit] [autoit]
DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', $Flag, 'ptr', 0)
EndFuncFunc OnAutoItExit()
[/autoit]
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_KeyProc)
EndFunc -
Geht ausschließlich per Registryeintrag und ist erst ab Neustart wirksam.
Hier ein LinkOder du fängst den Tastendruck per Hook ab.
Edit:
Hier mal das Bsp. für den Hook. Solange das Skript läuft, werden Tastatureingaben der beiden WIN-Tasten ins Nirvana umgeleitet.
Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <WindowsConstants.au3>Global $hHookKeyboard, $pStub_KeyProc
[/autoit] [autoit][/autoit] [autoit]
Global Const $VK_WIN_LEFT = 0x5B
Global Const $VK_WIN_RIGHT = 0x5C
Global Const $Key_NONE = 0x0HotKeySet("!e", "ExitNow") ; Exit Alt+e
[/autoit] [autoit][/autoit] [autoit]$pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
[/autoit] [autoit][/autoit] [autoit]
$hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10)
WEndFunc ExitNow()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>ExitNowFunc OnAutoITExit()
[/autoit] [autoit][/autoit] [autoit]
DllCallbackFree($pStub_KeyProc)
_WinAPI_UnhookWindowsHookEx($hHookKeyboard)
EndFunc ;==>OnAutoITExitFunc _KeyProc($nCode, $wParam, $lParam)
[/autoit]
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
If ($wParam = $WM_KEYDOWN) And ($vkCode = $VK_WIN_LEFT Or $vkCode = $VK_WIN_RIGHT) Then
DllCall('user32.dll', 'int', 'keybd_event', 'int', $Key_NONE, 'int', 0, 'int', 0, 'ptr', 0)
Return -1
EndIf
Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc -
-
Noch eine Variante von mir:
Spoiler anzeigen
[autoit]#include <array.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $aTest[10][2] = [ _
['Beispiel5',''], _
['Beispiel7',''], _
['Beispiel1',''], _
['Beispiel6',''], _
['Beispiel4',''], _
['Beispiel9',''], _
['Beispiel8',''], _
['Beispiel3',''], _
['Beispiel10',''], _
['Beispiel2','']]Local $pos
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aTest) -1
$pos = _LastNumPosInStr($aTest[$i][0], -1)
$aTest[$i][1] = Number(StringMid($aTest[$i][0], $pos, StringLen($aTest[$i][1])-($pos-1)))
Next
_ArraySort($aTest,0,0,0,1)
_ArrayDisplay($aTest)Func _LastNumPosInStr($sString, $occurrence=1)
[/autoit]
Local $start = 1, $ende = StringLen($sString), $step = 1
If $occurrence = -1 Then
$start = $ende
$ende = 1
$step = -1
EndIf
For $i = $start To $ende Step $step
If StringRegExp((StringMid($sString, $i, 1)), '\D', 0) Then ExitLoop
Next
If $occurrence = 1 Then
Return $i-1
Else
Return $i+1
EndIf
EndFunc -
-
Schau mal hier: [ offen ] Wo sind ö/ä/ü bei _IsPressed?
-
-
OK, hier mal der eigentliche Inhalt einer Msg:
[autoit]WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
$hWnd ; - Handle des Fensters, das die Nachricht bringt
$iMsg ; - die Nachricht
$iwParam ; - DWORD-Wert
; Lo = ID des Ctrl, das die Nachricht bringt
; Hi = Code der Nachricht
$ilParam ; - Handle des Ctrl, das die Nachricht bringt