BugFix hat seinen Post noch mal bearbeitet - der Schalter steht nun auch drin.
Dann brauchts du nichst abfangen etc. ShellExecute kannst du mit auf den Weg geben ob das Fenster zu sehen sein soll.
BugFix hat seinen Post noch mal bearbeitet - der Schalter steht nun auch drin.
Dann brauchts du nichst abfangen etc. ShellExecute kannst du mit auf den Weg geben ob das Fenster zu sehen sein soll.
chip hat natürlich recht mit dekompelieren,
wenn wir das mal ignorieren müsstest du das Datum beim kompilieren mit einbauen - sprich mach dir eine Variable ganz oben in deinem Skript - und die musst du bei einer neuen Version eben kurz anpassen.
Noch besser Du kannst beim Kompilieren eigene Befehle (Run Before / After) einbinden - schreib dir ein Skript was in diese Variable immer das aktuelle Datum vor dem Kompilieren reinsetzt. (also die .au3 Datei bearbeitet - Zeile mit "Dim $sAblaufdatum = "31.12.2011" " sucht und durch aktuellen Wert ersetzt.
BLinz
Och nee, die ganze formatierung im Eimer. Viel spass noch.
Ist wieder da - die Formatierung
Ähm, das sind nicht die Windows-Message-Box Icons - das ist etwas eigenes.
Die funkey-Lösung stürzen sich auf die in Windows eingebauten, in den DLL enthaltenen Icons.
Da musst du dann doch Pixelsearch nehmen - gibt es keinen Text den du auswerten kannst?
BLinz
Mittagspause, hab den ersten Post überarbeitet / aktualisiert
Hast du mal debugged was er in der $hIcon zurückgibt? ob überhaupt etwas drin steht?
Eventuell Zwischenprüfungen einbauen ob das vorher mit dem Handle auf das Fenster etc überhaupt geklappt hat (Zeile 11, danach auf @error prüfen)
BLinz
Schau dir mal das Beispiel für ShellExecute in der Hilfe an - da gibt es auch drucken (wenn die Datei ein Dokument ist).
sonst nenne die erstellte Datei doch .rtf statt .txt - rtf sollte er mit Wordpad öffnen, ob FilePrint das macht weis ich nicht,
ShellExecute sollte die passende Anwendung nehmen.
Ansonsten - wordpad direkt ansteuern (also wordpad.exe + datei + schalter für drucken) - wie der Parameter für das drucken war müsste man mal eben googln
BLinz
Wenn Du statt der doppelten Anführungszeichen die einfachen Anführungszeichen verwendest, kannst Du die doppelten für die Anzeige benutzen
Mhh ist mir bewusst - entweder die " " aussen und die ' im Text - oder umgekehrt - richtig?
Deine Vorschläge teste ich heute Abend (mein StringRegExReplace kann auch noch kürzer, eleganter) und würde dann den ersten Beitrag aktualisieren.
Danke für das durchprüfen!
BLinz
Moin Moin,
so z.B.?
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=C:\_AutoIT\AutoIt.de\FormEditControl_to_FilePrint.kxf
$FormEditControlFilePrint = GUICreate("FormEditControlFilePrint", 615, 438, 607, 124)
$Edit1 = GUICtrlCreateEdit("", 48, 48, 449, 297)
GUICtrlSetData(-1, StringFormat("ganz viel\r\nTest\r\nund \r\nnoch\r\nmehr \r\ntext"))
$ButtonDrucken = GUICtrlCreateButton("Drucken!", 40, 368, 483, 49)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonDrucken
$hTempdatei = FileOpen(@TempDir & "\temp.txt",2)
FileWrite($hTempdatei,GUICtrlRead($Edit1)) ; Text in TempDatei
FileClose($hTempdatei)
_FilePrint(@TempDir & "\temp.txt") ; Drucken
FileDelete(@TempDir & "\temp.txt") ; Aufräumen
EndSwitch
WEnd
Einfach in eine Temp-Datei schreiben - dann kannst du sie mit _FilePrint aufrufen
Natürlich solltest du ein paar mehr Prüfungen einbauen (ob das Dateierstellen / Drucken geklappt hat etc.)
BLinz
*g* den Ordner mit den Beispielen - hab gar nicht gesehen das es den gibt ....
von mir ein
Aha, das gute Zeug rückt er erst auf Anfrage heraus (Kleiner Scherz)
Also Prinzipiell --- müsstest du der vorhanden Netzwerkkarte eine 2. IP verpassen - aber dann wird sich Windows auch über diese melden.
Du müsstest also die Netzwerkkarte in einen speziellen Modus schalten bzw. dich dort dazwischen schieben.
Virtualisierungssoftware wie VMware Workstation, VirtualPC etc macht das so - aber mit ein paar dicken Treibern.
und dann die Kommunikation wie ein anderer Windows Server vornehmen (am DNS und NetBIOS Masterbrowser anmelden etc) .. hui ..
Durch ein paar Registry Schlüssel kannst du deinem Rechner einen 2. Namen und eine 2. Identität verpassen - er hört dann vollwertig auf beides - aber es wäre immer noch der selbe Rechner
Wenn Ihr einen eigenen DNS Server habt könntest du darüber deinen Rechner über einen 2. Namen bekannt machen (AAA Record)
Das mit der eigenen IP geht nur mit passenden Treiber für die Netzwerkkarte (die muss sich ja dann wie ein Switch verhalten und zwischen den beiden IP's vermitteln) und entsprechender Software.
Reicht nicht eine VM dafür ?
Neee,
du schreibt dort die IP des anderen Rechners im Netzwerkes zu DynDns Adresse.
Bist du RechnerA schreibst du da die IP von RechnerB rein.
So kannst du in deinem Skript für Test's trotzdem die DynDns Adresse verwenden
Schau mal in den AutoIt Ordner -> Examples -> Advanced -> ShowPNG.au3
Ist ein Simples Beispiel
{schaut staunend in den Examples Ordner ... und der war schon immer da?}
Das Demo-Skript zeigt wie man einen Benutzer eine beliebige HotKey Kombination auswählen lassen kann.
Gebraucht habe ich das für ein eigenes Programm - ich fand es schlicht unschön dort den Benutzer {F12} eingeben zu lassen,
eine ComboBox fand ich ebenfalls "uncool".
Ich habe in dem Skript eingeschränkt, das für einen HotKey mindestens eine der Tasten STRG, ALT oder WIN gedrückt sein muss.
Zusätzlich kann der Benutzer die SHIFT Taste drücken sowie eine "frei" wählbare Taste.
Leider habe ich für SetHotKey() nicht für alle Tasten ein Gegenstück gefunden (mit _IsPressed lässt sich mehr abfragen)
Verbesserungsvorschläge, insbesondere Vereinfachungen werden gerne angenommen!
Edit1 vom 17.11.2011:
Edit2 vom 17.11.2011:
Edit3 vom 17.11.2011:
Hier der Code, ich habe mich um reichlich Kommentare bemüht:
#Region ;************ Includes ************
;~ #include <GUIConstants.au3>;~~~
#include <Misc.au3>
;~ #include <Array.au3>;~~~
;~ #include <ButtonConstants.au3>;~~~
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
;~ #include <StaticConstants.au3>;~~~
;~ #include <WindowsConstants.au3>;~~~
#EndRegion ;************ Includes ************
; HotKey Frei-Wählen-Setup-Demo
; Demo für Demonstration wie man einen Benutzer einen HotKey für einen Aufgabe frei wählen lässt.
; 16.11.2011 von Bernhard Linz (BLinz) für www.autoit.de
Global $sPressedKeys ; enthält später die gleichzeitig gedrückten tasen zur Auswertung
Global $sHotKeyLabel ; Der Text der oben in der GUI Angezeigt werden soll
Global $sHotKeyString ; Der String für den Befehl HotKeySet
Global $bKeyALT ; Status der ALT Taste wird hier abgelegt
Global $bKeySTRG ; Status der Steuerungstaste wird hier abgelegt
Global $bKeySHIFT ; Status der SHIFT Taste wird hier abgelegt
Global $bKeyWIN = False
;Nachfolgend ein Array mit den möglichen Tasten (wobei wir einige später herausfiltern, aber die Liste sollte möglichst Komplett sein)
; 4 Felder: Feld1 = HexCode Taste, Feld2 = Englische Beschreibung, Feld3 = Deutsche Beschreibung, Feld4 = String wie ihn SetHotKey benötigt
; wenn das 4. Feld leer ist hatte ich keine Taste für SetHotKey gefunden
Global $aKeylist_with_Description[108][4] = [ _
["01","Left mouse button","Linke Maustaste",""], _
["02","Right mouse button","Rechte Maustaste = F12",""], _
["04","Middle mouse button (three-button mouse)","Mittlere Maustaste = F12",""], _
["05","Windows 2000/XP: X1 mouse button","X1 Maus-Taste = F12",""], _
["06","Windows 2000/XP: X2 mouse button","X2 Maus-Taste = F12",""], _
["08","BACKSPACE key","Löschtaste rückwärts","{BACKSPACE}"], _
["09","TAB key","Tabulator-Taste","{TAB}"], _
["0C","CLEAR key","Entf-Taste","{DEL}"], _
["0D","ENTER key","Enter/Return-Taste","{ENTER}"], _
["10","SHIFT key","Shift/Umschalt/'Großschreib'-Taste",""], _
["11","CTRL key","Ctrl/Strg-Taste",""], _
["12","ALT key","Alt-Taste",""], _
["13","PAUSE key","Pause-Taste","{PAUSE}"], _
["14","CAPS LOCK key","Feststelltaste","{CAPSLOCK toggle}"], _
["1B","ESC key","Esc-Taste","{ESC}"], _
["20","SPACEBAR","Leertaste","{SPACE}"], _
["21","PAGE UP key","Bild-auf Taste","{PGUP}"], _
["22","PAGE DOWN key","Bild-ab Taste","{PGDN}"], _
["23","END key","Ende-Taste","{END}"], _
["24","HOME key","Pos 1-Taste","{HOME}"], _
["25","LEFT ARROW key","Pfeiltaste nach links","{LEFT}"], _
["26","UP ARROW key","Pfeiltaste nach oben","{UP}"], _
["27","RIGHT ARROW key","Pfeiltaste nach rechts","{RIGHT}"], _
["28","DOWN ARROW key","Pfeiltaste nach unten","{DOWN}"], _
["29","SELECT key","Auswahltaste",""], _
["2A","PRINT key","Drucktaste","{PRINTSCREEN}"], _
["2B","EXECUTE key","Ausführentaste",""], _
["2C","PRINT SCREEN key","Drucktaste","{PRINTSCREEN}"], _
["2D","INS key","Einfg-Taste","{INS}"], _
["2E","DEL key","Entf-Taste","{DEL}"], _
["30","0","0","0"], _
["31","1","1","1"], _
["32","2","2","2"], _
["33","3","3","3"], _
["34","4","4","4"], _
["35","5","5","5"], _
["36","6","6","6"], _
["37","7","7","7"], _
["38","8","8","8"], _
["39","9","9","9"], _
["41","A","A","a"], _
["42","B","B","b"], _
["43","C","C","c"], _
["44","D","D","d"], _
["45","E","E","e"], _
["46","F","F","f"], _
["47","G","G","g"], _
["48","H","H","h"], _
["49","I","I","i"], _
["4A","J","J","j"], _
["4B","K","K","k"], _
["4C","L","L","l"], _
["4D","M","M","m"], _
["4E","N","N","n"], _
["4F","O","O","o"], _
["50","P","P","p"], _
["51","Q","Q","q"], _
["52","R","R","r"], _
["53","S","S","s"], _
["54","T","T","t"], _
["55","U","U","u"], _
["56","V","V","v"], _
["57","W","W","w"], _
["58","X","X","x"], _
["59","Y","Y","y"], _
["5A","Z","Z","z"], _
["5B","Left Windows key","Linke Windows-Taste",""], _
["5C","Right Windows key","Rechte Windows-Taste",""], _
["60","Numeric keypad 0 key","rechter Nummerblock Taste 0","{NUMPAD0}"], _
["61","Numeric keypad 1 key","rechter Nummerblock Taste 1","{NUMPAD1}"], _
["62","Numeric keypad 2 key","rechter Nummerblock Taste 2","{NUMPAD2}"], _
["63","Numeric keypad 3 key","rechter Nummerblock Taste 3","{NUMPAD3}"], _
["64","Numeric keypad 4 key","rechter Nummerblock Taste 4","{NUMPAD4}"], _
["65","Numeric keypad 5 key","rechter Nummerblock Taste 5","{NUMPAD5}"], _
["66","Numeric keypad 6 key","rechter Nummerblock Taste 6","{NUMPAD6}"], _
["67","Numeric keypad 7 key","rechter Nummerblock Taste 7","{NUMPAD7}"], _
["68","Numeric keypad 8 key","rechter Nummerblock Taste 8","{NUMPAD8}"], _
["69","Numeric keypad 9 key","rechter Nummerblock Taste 9","{NUMPAD9}"], _
["6A","Multiply key","rechter Nummerblock Malzeichen","{NUMPADMULT}"], _
["6B","Add key","rechter Nummerblock Pluszeichen","{NUMPADADD}"], _
["6C","Separator key","rechter Nummernblock Eingabetaste","{NUMPADENTER}"], _
["6D","Subtract key","rechter Nummerblock Minuszeichen","{NUMPADSUB}"], _
["6E","Decimal key","rechter Nummerblock Kommazeichen","{NUMPADDOT}"], _
["6F","Divide key","rechter Nummerblock Geteiltzeichen","{NUMPADDIV}"], _
["70","F1","F1","{F1}"], _
["71","F2","F2","{F2}"], _
["72","F3","F3","{F3}"], _
["73","F4","F4","{F4}"], _
["74","F5","F5","{F5}"], _
["75","F6","F6","{F6}"], _
["76","F7","F7","{F7}"], _
["77","F8","F8","{F8}"], _
["78","F9","F9","{F9}"], _
["79","F10","F10","{F10}"], _
["7A","F11","F11","{F11}"], _
["7B","F12","F12","{F12}"], _
["7C","F13","F13","{F13}"], _
["7D","F14","F14","{F14}"], _
["7E","F15","F15","{F15}"], _
["7F","F16","F16","{F16}"], _
["90","NUM LOCK key","Num-Taste","{NUMLOCK toggle}"], _
["91","SCROLL LOCK key","Rollen-Taste","{SCROLLLOCK toggle}"], _
["A0","Left SHIFT key","linke Shift/Umschalt/Feststelltaste",""], _
["A1","Right SHIFT key","rechte Shift/Umschalt/Feststelltaste",""], _
["A2","Left CONTROL key","linke Ctrl/Strg-Taste",""], _
["A3","Right CONTROL key","rechte Ctrl/Strg-Taste",""], _
["A4","Left MENU key","(linke) Alt-Taste",""], _
["A5","Right MENU key","(rechte) Alt Gr-Taste",""] ]
; Die GUI
#Region ### START Koda GUI section ### Form=C:\_AutoIT\HotKey Setup\FormHotKeyTest.kxf
$FormHotKeyTest = GUICreate("HotKey Setup Demo - 2011 von BLinz", 611, 266, 607, 124)
$ButtonHotkeybelegen = GUICtrlCreateButton("Hotkey belegen", 8, 208, 593, 49)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$InputStatus = GUICtrlCreateInput("Bereit ....", 8, 168, 593, 32, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
$Group1 = GUICtrlCreateGroup(" Hotkey ist ", 8, 8, 593, 49)
$LabelHokey = GUICtrlCreateLabel("", 16, 24, 574, 26)
GUICtrlSetFont(-1, 14, 800, 0, "Courier New")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$LabelAnleitung = GUICtrlCreateLabel("Anleitung:", 16, 72, 51, 17)
$LabelAnleitungText1 = GUICtrlCreateLabel("Zuerst alle Zusatztasten wie ALT, STRG, SHIFT oder WIN drücken - und dann die Zusatztaste, z.B. F12", 80, 72, 497, 17)
$LabelAnleitungText2 = GUICtrlCreateLabel("Nach erfolgreicher Belegung steht die gewählte Kombination oben im -=> Hotkey ist <=- Feld", 80, 120, 438, 17)
$LabelAnleitungText3 = GUICtrlCreateLabel("Danach kann der Hotkey getestet werden - es erscheint dann eine Message Box.", 80, 144, 389, 17)
$LabelAnleitungText4 = GUICtrlCreateLabel("Es muss mindestens eine der Tasten ALT, STRG oder WIN gedrückt werden!", 80, 96, 370, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
; Die Hauptschleife für die Abfrage der GUI
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
; Das rote X oben rechts - und Tschüss!
Exit
Case $ButtonHotkeybelegen
; Der Anwender will einen HotKey belegen!
GUICtrlSetState($ButtonHotkeybelegen, $GUI_DISABLE) ; den Button ausgrauen damit der Benutzer sieht das der Abfragemodus aktiv ist
; Variablen wieder auf Ausgangsposition bringen - falls der Anwender das ganze mehrmals aufruft
$sHotKeyLabel = ""
$sHotKeyString = ""
$bKeyALT = False
$bKeySTRG = False
$bKeySHIFT = False
$bKeyWIN = False
; Benutzer Informieren das es los geht:
GUICtrlSetData($LabelHokey, "Bitte Tastenkombination drücken!")
; In der folgenden Schleife fragen wir die Tasten ab mit der Funktion _GetKeyCombination()
While 1
$sPressedKeys = _GetKeyCombination()
;prüfen ob eine der Haupttasten gedrückt wurde
If StringInStr($sPressedKeys,"10") > 0 Then $bKeySHIFT = True
If StringInStr($sPressedKeys,"11") > 0 Then $bKeySTRG = True
If StringInStr($sPressedKeys,"12") > 0 Then $bKeyALT = True
If StringInStr($sPressedKeys,"5B") > 0 Then $bKeyWIN = True
;Info-Anzeige füllen
GUICtrlSetData($InputStatus, $sPressedKeys)
;Nachfolgende Zeile schmeisst alle bösen Tasten aus dem String,
;Böse Tasten sind die Haupttasten sowie die Nebenergebnisse (z.B. 10 für Shift und A0 dafür das es die linke war)
$sPressedKeys = StringRegExpReplace($sPressedKeys,"(?i)\s|1[012]|A[012345]|5[BCD]","")
;Wenn jetzt noch eine Taste übrig ist, haben wir unsere Tastenkombination (=mindestens ALT oder STRG oder WIN + eine Taste)
If $bKeyALT = True Or $bKeySTRG = True Or $bKeyWIN = True And StringLen($sPressedKeys) > 0 Then ExitLoop
WEnd
;Nun den Text für die Anzeige und den String für den Befehl SetHotKey zusammenbauen
If $bKeySTRG = True Then
$sHotKeyLabel = $sHotKeyLabel & "[STRG] + " ; für die Anzeige
$sHotKeyString = $sHotKeyString & "^" ; für HotKeySet (siehe Hilfe)
EndIf
If $bKeyALT = True Then
$sHotKeyLabel = $sHotKeyLabel & "[ALT] + "
$sHotKeyString = $sHotKeyString & "!"
EndIf
If $bKeySHIFT = True Then
$sHotKeyLabel = $sHotKeyLabel & "[SHIFT] + "
$sHotKeyString = $sHotKeyString & "+"
EndIf
If $bKeyWIN = True Then
$sHotKeyLabel = $sHotKeyLabel & "[WIN] + "
$sHotKeyString = $sHotKeyString & "#"
EndIf
; Jetzt noch die Taste dazu (z.B. F12), die suchen wir nun im Array
For $i = 0 To UBound($aKeylist_with_Description) - 1
If $aKeylist_with_Description[$i][0] = $sPressedKeys Then
$sHotKeyLabel = $sHotKeyLabel & $aKeylist_with_Description[$i][2] ; den deutschen Text [2] anhängen
If $aKeylist_with_Description[$i][3] <> "" Then ; es gab Tasten die zwar abgefragt aber nicht als HotKey gesetzt werden können (die haben "")
$sHotKeyString = $sHotKeyString & $aKeylist_with_Description[$i][3] ;den String für SetHotKey weiter zusammenbauen
HotKeySet($sHotKeyString,"_HotKeyFunktionTest") ; Hotkey setzen
GUICtrlSetData($InputStatus,"Bereit für Test!") ; Lieber Anwender, es hat geklappt
Else
MsgBox(16,"FEHLER","Zeichen wurde nicht im Array gefunden!") ; diese Taste kann nicht mit SetHotKey gesetzt werden
GUICtrlSetData($InputStatus,"Fehler! Hotkey noch einmal setzten!") ; Lieber Anwender, es hat nicht geklappt
EndIf
EndIf
Next
GUICtrlSetData($LabelHokey, $sHotKeyLabel) ; Anwender über die erkannte Tastenkombination informieren
GUICtrlSetState($ButtonHotkeybelegen, $GUI_ENABLE) ; und Schaltfäche wieder aktivieren
EndSwitch
WEnd
; Nachfolgende Funktion stammt von BugFix, www.autoit.de
Func _GetKeyCombination()
Local $sReturnstring
For $i = 0 To 255
If _IsPressed(Hex($i, 2)) Then $sReturnstring &= Hex($i, 2) & ' '
Next
Return StringTrimRight($sReturnstring, 1)
EndFunc ;==>_GetKeyCombination
; Und die Funktion für den Test des HotKeys
Func _HotKeyFunktionTest()
MsgBox(0,"Hinweis","Diese Message Box wurde per Hotkey aufgerufen!")
EndFunc
Alles anzeigen
BLinz
Danke Oscar,
mit dem Hashwerten habe ich da doch gleich eine Lösung für die Praxis
Nein liebe Mit-AutoIt-ler, ich werde keine Hochsicherheitsanwendungen mit darin enthaltenen Passwörtern schreiben
Naja,
du kannst "schummeln" ... für extern halt das Dyndns, für intern schreibts du dir einfach den dyndns namen in die lokale host datei mit der IP des anderen Rechners
c:\Windows\System32\drivers\etc\hosts
ist die Datei
*g* Danke chip - google konnte ich mal so gerade noch selbst bedienen.
Ja ja, ist ja gut, mit dem richtigem Tool ist es ein klacks.
Wie man es sicher machen könnte wäre dann ein eigener Thread
1. Encoding beendet
2. Kopieren die datei zur Notebook
3. Schalten die rechner aus
4. laden die datei hoch(rapidshare, wupload.com)
Zu 1: geht das kodieren nur über eine GUI oder auch per Kommandozeile?
Wenn ja kann man 1 und 2 in einer kleinen batch bzw. durch AutoIz zusammen fassen - kodiere die Datei mit parametern x, wenn kodierer fertig kopiere Datei nach 2. rechner.
Wenn kopiert dann 3 auschalten
4. 2 Rechner - da läuft ein programm was einfach regelmäßig einen Ordnerinhalt überprüft - wenn datei da dann etwas damit machen, danach in Odner "erledigt" verschieben.