Glückwunsch zum Jubiläum.
Wie ich das ISN das erste Mal auf dem Schirm hatte, war ich schlicht baff,
was mit Autoit alles machbar ist. Und das ISN wird immer besser. Danke
für deine stetige Arbeit daran. Also, auf die nächsten fünf Jahre.
Beiträge von kevlar
-
-
Das war wohl ein Eigentor.
Wird nicht wieder vorkommen.
-
Also, wenn ich die Variable $Dali aus deiner Exe nehme, funktioniert es.
Die Beta müsste ich in ne VM installieren, habe gerade keine frische zur Hand.Edit: Wahrscheinlich ist beim Rauskopieren des Quellcodes aus dem Forum
was umgekippt - andere Erklärung fällt mir nicht ein. -
Ich benutze AutoIt Version 3.3.12.0. Ja, die von dir angehängte Exe funktioniert,
tolle Sache. Der weiter oben vorgestellte Quellcode weiterhin nicht, auch nicht
kompiliert als x86 oder x64. Habe das heute gleich nach dem Hochfahren
getestet, falls gestern irgendwas entgleist war nach reichlicher Rechnernutzung.Btw.: Von partieller Unrasiertheit habe ich nichts bemerkt
-
Tscha, bei mir sehe ich nur eine graue Fläche - tut sich leider nix (Win7Pro x64).
-
-
... PS: Jaja ich weiß ich sollte mal sauber programmieren lernenLol, also für mich ist das AutoIt Studio ein sehr sauberes Stück Programmier-Arbeit. Dagegen sehen meine kleinen Helferlein von innen teilweise so aus, als wenn sich der Deibel zerfetzt hat
Bei einer derartigen Codemenge tendiert die Möglichkeit, Bugs einzubauen, gegen unendlich - also alles im grünen Bereich.
-
-> Evtl hätte es gereicht im ISN in den Programmeinstellungen unter Allgemein die Verknüpfungen zum ISN zu deaktivieren. (.au3 dateien, isn dateien, isp dateien und kontextmenü im explorer)
Hallo ISI360,
genau das hatte ich getan beim Einrichten - hat eben nicht gereicht. ISN hat sich trotzdem die .au3's gekrallt. Ich habe heute mal eine x64-VM aufgesetzt, zum Testen. Hätte ich gleich tun sollen, aber ich war zu heiß auf das Teil
Laden des letzten Projekts ist in der VM genau einmal gescheitert, trotz Aktivierung in den Einstellungen.
Ich bin so vorgegangen:
1. ISN erstmals starten, Einrichtung durchlaufen.
2. Dummy-Projekt anlegen, speichern.
3. Laden des letzten Projekts aktivieren, Einstellung speichern.
4. ISN schließen (mit Schließkreuz), erneut starten.
5. Das Projekt wird nicht geladen.
6. ISN schließen (wieder mit Schließkreuz), erneut starten.
7. Projekt wird geladen :))
8. Die Wunder werden niemals alle...Werde mal die nächsten Tage etwas im Code herumspazieren - es gibt immer was zu lernen. Und auf den Fenster-Fix warten. Ahja: der Wert fullscreenmode=false wird aus der INI korrekt ausgelesen, versandet dann aber anscheinend irgendwo.
Gruß, kevlar
-
Also, ich bin ja schwer beeindruckt, was mit AutoIt alles möglich ist. Nach dem ersten Start ist mir erstmal die Kinnlade auf die Leertaste geknallt. Ich nutze (bisher) Notepad++. Mit SciTE kann ich mich nicht anfreunden - zum Ändern von Einstellungen in ellenlangen Konfigs rumzuwursteln ist nicht mein Ding. Da kann ich ja gleich mit Linux anfangen
AutoIt Studio ist sehr professionell gemacht und sollte eine erhebliche Erleichterung beim Coden bringen, wenn da nicht folgendes wäre:
- Nach der Erstkonfiguration ist eine vorhandene AutoIt-Installation praktisch zerschossen. Kein Kompilieren, Tidy etc. per Kontextmenü mehr möglich. Nach dem Motto: alles oder nichts. Zumindest ein Hinweis darauf wäre hilfreich, mit der Möglichkeit, den Einrichtungsassistenten ohne Folgen abzubrechen. Denn eine Deinstallation des Studios macht nichts rückgängig. Ich durfte die Registry entrümpeln und AutoIt neu installieren.
- AutoIt Studio merkt sich die Fenster- und Sliderpositionen nicht. Es startet immer im Vollbildmodus und zeigt den Optionsdialog (das letzte Projekt wird nicht geladen) - egal was ich einstelle. Beim Verkleinern des Fensters müssen dann auch noch die Slider neu justiert werden. Alle anderen Einstellungen bleiben erhalten. Getestet unter Win7Pro x86 und x64.
Ich habe mich deswegen mal im Sourcecode umgeschaut (_Toggle_Fulscreen() mit einem l - sollte in _Toggle_Foolscreen umbenannt werden), aber auf Anhieb nichts gefunden, um das zu fixen. Wenn der Fenster-Rödel behoben ist, kann NPP bei mir zumindest für AutoIt in Rente gehen
Gruß, kevlar
-
Okay - danke. Dann versuche ich das mal... Code::Blocks 12.11 ist jetzt auch installiert. Ich stelle mich schon mal auf eine Tonne Fehlermeldungen ein
-
> Du musst schon einen C++11-fähigen Compiler (gcc oder clang aber nicht Visual Studio) verwenden.
Installiert ist Cygwin gcc-Version 4.8.2Spoiler anzeigen
Code
Alles anzeigen$ gcc -v Es werden eingebaute Spezifikationen verwendet. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-cygwin/4.8.2/lto-wrapper.exe Ziel: i686-pc-cygwin Konfiguriert mit: /cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-1/src/gcc-4.8.2/c onfigure --srcdir=/cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-1/src/gcc-4.8.2 - -prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecd ir=/usr/libexec --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --li bdir=/usr/lib --datarootdir=/usr/share --docdir=/usr/share/doc/gcc -C --build=i6 86-pc-cygwin --host=i686-pc-cygwin --target=i686-pc-cygwin --without-libiconv-pr efix --without-libintl-prefix --enable-shared --enable-shared-libgcc --enable-st atic --enable-version-specific-runtime-libs --enable-bootstrap --disable-__cxa_a texit --with-dwarf2 --with-arch=i686 --with-tune=generic --disable-sjlj-exceptio ns --enable-languages=ada,c,c++,fortran,java,lto,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp --disable-libitm --en able-libquadmath --enable-libquadmath-support --enable-libssp --enable-libada -- enable-libjava --enable-libgcj-sublibs --disable-java-awt --disable-symvers --wi th-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-incl ude=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix -- with-system-zlib Thread-Modell: posix gcc-Version 4.8.2 (GCC)
Passt der?
-
Das ist ein hochinteressantes Projekt. Meine Kenntnisse in C++ sind leider sehr rudimentär. Daher weiß ich (noch) nicht, wie ich zu dem Projekt beitragen könnte.
Erste Hürde: Ich habe die AutoItC-Converter.exe aus dem alten Projekt hergenommen und da die vom Programm verlangten DLLs libgcc_s_dw2-1.dll und libstdc++-6.dll nicht dabei waren, die aus "C:\texlive\tlpkg\tlperl\bin" (aktuelle Version) verwendet. Nun gibts von AutoItC-Converter.exe eine Fehlermeldung:
Der Prozedureinsprungpunkt "_ZNSs8pop_backEv" wurde in der DLL "libstdc++-6.dll" nicht gefunden.Wo bekomme ich die passenden DLLS her? g++ ist installiert und die Pfade in der Compiler.ini sind korrekt gesetzt. C:\cygwin\bin ist im Path gesetzt.
UPDATE: im Avidemux-Installer habe ich scheinbar passende DLLs gefunden. Der Nullsoft-Installer lässt sich mit 7zip entpacken. Allerdings kommen nun (abgesehen von der POSIX-Path-Warnung) folgende Fehler:
Code
Alles anzeigenAutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x45): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x60): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_empty_rep_storage' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x20): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x3b): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_empty_rep_storage' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x16e): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&)' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x192): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&)' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x224): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_dispose(std::allocator<wchar_t> const&)' AutoIt.o:AutoIt.cpp:(.text$_ZN2au7au_mainEv+0x240): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_dispose(std::allocator<wchar_t> const&)' /usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld: AutoIt.o: bad reloc address 0x20 in section `.eh_frame' /usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld: final link failed: Invalid operation collect2: error: ld returned 1 exit status
Quelltext des Versuchs:
[autoit]MsgBox(64, "Funzt :)", "Hello AutoItC !")
[/autoit]
Exit -
@Großvater: Genial, funzt danke! Ich habe das von dir verbesserte Listing auch ins erste Posting gesetzt und den Download entsprechend geändert. Unter "Author" ist selbstverständlich ein Hinweis auf deine Mitarbeit drin.
Du hast da einen kleinen Variablenfehler.
Global $canExit muss unter die Includes und nicht in die Funktion.Stimmt, das macht man so normalerweise nicht. Hat sich dank Großvater erledigt.
Es ist aber ein ziemlich cooles Skript.
Danke .
Gruß, tiotua
-
Hallo,
wenn jemand nach einer Möglichkeit sucht, den Schließ-Button (x) eines Fensters zu deaktiveren/aktivieren, hier ist sie:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]$frmMain = GUICreate("Test", 222, 60, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
$btnEnable = GUICtrlCreateButton("Enable", 20, 16, 75, 25)
$btnDisable = GUICtrlCreateButton("Disable", 124, 16, 75, 25)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnEnable
_GUIDisableCloseButton($frmMain, False)
Case $btnDisable
_GUIDisableCloseButton($frmMain, True)
EndSwitch
WEnd; #FUNCTION# ====================================================================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit]
;
; Name...........: _GUIDisableCloseButton
; Description ...: Disables/enables the GUI close button and also ALT-F4 (see remarks)
; Syntax.........: _GUIDisableCloseButton($hGUI, $iMsg)
; Parameters ....: $hGUI - Handle of the target GUI
; $iMsg - True = disable, False = enable
; $wParam - for message handling
; $lParam - for message handling
; Return values .: $iMsg (True/False)
; Remarks .......: The function registers itself as message handler for WM_SYSCOMMAND
; Example .......: Yes
; Author ........: tiotua, enhanced by Großvater (http://www.autoit.de)
;
; ===============================================================================================================================
Func _GUIDisableCloseButton($hGUI, $iMsg, $wParam = 0, $lParam = 0)
Local Static $CurrentStates = ""
Local Static $MsgRegistered = False
Local Const $WM_SYSCOMMAND = 0x0112
Local Const $MF_GRAYED = 0x1
Local Const $MF_DISABLED = 0x2
Local Const $SC_CLOSE = 0xF060
Local $IsDisabled = StringRegExp($CurrentStates, "(?m)^" & $hGUI)
; WM_SYSCOMMAND message handler ============================================
If $iMsg == $WM_SYSCOMMAND Then
If $wParam = $SC_CLOSE Then
If $IsDisabled Then Return 0
EndIf
Return $GUI_RUNDEFMSG
EndIf
; Set/Unset handler ========================================================
If Not IsHWnd($hGUI) Then Return SetError(1, 0, -1)
Local $aResult
If $iMsg Then
If Not $IsDisabled Then
$aResult = DllCall("User32.dll", "HWND", "GetSystemMenu", "HWND", $hGUI, "Int", 0)
DllCall("User32.dll", "Int", "EnableMenuItem", "HWND", $aResult[0], "UInt", $SC_CLOSE, "UInt", BitOR($MF_GRAYED, $MF_DISABLED))
$CurrentStates &= $hGUI & @TAB & $aResult[0] & @LF
EndIf
Else
If $IsDisabled Then
$aResult = StringRegExp($CurrentStates, "(?m)^" & $hGUI & "\t(.*)$", 1)
DllCall("User32.dll", "Int", "EnableMenuItem", "HWND", $aResult[0], "UInt", $SC_CLOSE, "UInt", 0)
DllCall("User32.dll", "None", "GetSystemMenu", "HWND", $hGUI, "Int", 1)
$CurrentStates = StringRegExpReplace($CurrentStates, "(\A|\n)" & $hGUI & "\t" & $aResult[0] & "(\n|\z)", "")
EndIf
EndIf
If $CurrentStates Then
If Not $MsgRegistered Then
$MsgRegistered = GUIRegisterMsg($WM_SYSCOMMAND, "_GUIDisableCloseButton")
; ConsoleWrite("WM_SYSCOMMAND registered!" & @CRLF)
EndIf
Else
If $MsgRegistered Then
GUIRegisterMsg($WM_SYSCOMMAND, "")
$MsgRegistered = False
; ConsoleWrite("WM_SYSCOMMAND unregistered!" & @CRLF)
EndIf
EndIf
Return $iMsg
EndFunc ;==>_GUIDisableCloseButton
Das Disablen/Enablen von ALT+F4 ist suboptimal gelöst, da Zusatzcode im Skript eingefügt werden muss. Hat da jemand eine Idee?
Edit: Von Großvater überarbeitet und verbessert. ALT-F4 wird nun lässig abgefangen. Siehe Listing und Anhang.Gruß, tiotua