Autoit 2 Fragen

10/28/2014 20:54 Aligator4820#1
Hey.

Erste frage :
Ich möchte Bilder in ein von mir geschriebenes Programm einfügen. Das mache ich über Koda. Aber die Bilder werden dann nur angezeigt wenn man sich auch selbst auf dem PC hat. Ich will aber das die Bilder im Programm dabei sind.

Zweite Frage :
Ist es möglich einzustellen das dass Programm nicht schließbar ist? Also das der X Button ausgegraut ist oder gar nicht vorhanden. Ich mache nämlich so ein kleines Spaß Programm um Freunde zu trollen.
10/28/2014 21:20 -SoulCr4ck-#2
Quote:
Originally Posted by Aligator4820 View Post
Hey.

Erste frage :
Ich möchte Bilder in ein von mir geschriebenes Programm einfügen. Das mache ich über Koda. Aber die Bilder werden dann nur angezeigt wenn man sich auch selbst auf dem PC hat. Ich will aber das die Bilder im Programm dabei sind.

Zweite Frage :
Ist es möglich einzustellen das dass Programm nicht schließbar ist? Also das der X Button ausgegraut ist oder gar nicht vorhanden. Ich mache nämlich so ein kleines Spaß Programm um Freunde zu trollen.
Bild kannst du via Inetget downloaden. Du kannst es aber auch von einem FTP server downloaden oder mit einem FilePacker das Bild an die exe Hängen.

GUI_EVENT_CLOSE (-3) es ist möglich mithilfe von styles keine Controlbox zu generieren. Du kannst aber auch ganz einfach den Befehl zum schließen entfernen.
10/28/2014 21:28 .yorliK#3
Quote:
Originally Posted by Aligator4820 View Post
Hey.

Erste frage :
Ich möchte Bilder in ein von mir geschriebenes Programm einfügen. Das mache ich über Koda. Aber die Bilder werden dann nur angezeigt wenn man sich auch selbst auf dem PC hat. Ich will aber das die Bilder im Programm dabei sind.

Zweite Frage :
Ist es möglich einzustellen das dass Programm nicht schließbar ist? Also das der X Button ausgegraut ist oder gar nicht vorhanden. Ich mache nämlich so ein kleines Spaß Programm um Freunde zu trollen.

Zu 1.
Code:
FileInstall("C:\test.bmp", "D:\mydir\test.bmp")
unter die Includes packen.
Der 1ste Parameter ist der jetzige Pfad, der 2te wo es beim Ausführen hinkommt.

Einfach den Pfad von dem Bild an den neuen Pfad anpassen.

Zu 2.

Code:
$Form1 = GUICreate("Form1", 359, 299, 448, 263, 0)
10/29/2014 21:45 Aligator4820#4
Quote:
Originally Posted by Kilroy. View Post
Zu 1.
Code:
FileInstall("C:\test.bmp", "D:\mydir\test.bmp")
unter die Includes packen.
Der 1ste Parameter ist der jetzige Pfad, der 2te wo es beim Ausführen hinkommt.

Einfach den Pfad von dem Bild an den neuen Pfad anpassen.

Zu 2.

Code:
$Form1 = GUICreate("Form1", 359, 299, 448, 263, 0)
Wenn ich $Form1 = GUICreate("Form1", 359, 299, 448, 263, 0) benutze wird das Fenster vom Programm irgend wie voll klein.
10/29/2014 22:40 KDeluxe#5
[Only registered and activated users can see links. Click Here To Register...]

Code:
#include <GuiMenu.au3>
#include <WinAPI.au3>
#include <WinAPISys.au3>
#include <WindowsConstants.au3>

Func DisableCloseButton($hwnd)
    _GUICtrlMenu_EnableMenuItem(_GUICtrlMenu_GetSystemMenu($hwnd), $SC_CLOSE, BitOR(0, $MF_DISABLED, $MF_GRAYED))
EndFunc

Func EnableCloseButton($hwnd)
    _GUICtrlMenu_EnableMenuItem(_GUICtrlMenu_GetSystemMenu($hwnd), $SC_CLOSE, BitOR(0, $MF_ENABLED))
EndFunc

Func DisableMinimizeButton($hwnd)
    _WinAPI_SetWindowLong($hwnd, $GWL_STYLE, BitAND(_WinAPI_GetWindowLong($hwnd, $GWL_STYLE), BitNOT($WS_MINIMIZEBOX)))
EndFunc

Func EnableMinimizeButton($hwnd)
    _WinAPI_SetWindowLong($hwnd, $GWL_STYLE, BitOR(_WinAPI_GetWindowLong($hwnd, $GWL_STYLE), $WS_MINIMIZEBOX))
EndFunc

Func DisableMaximizeButton($hwnd)
    _WinAPI_SetWindowLong($hwnd, $GWL_STYLE, BitAND(_WinAPI_GetWindowLong($hwnd, $GWL_STYLE), BitNOT($WS_MAXIMIZEBOX)))
EndFunc

Func EnableMaximizeButton($hwnd)
    _WinAPI_SetWindowLong($hwnd, $GWL_STYLE, BitOR(_WinAPI_GetWindowLong($hwnd, $GWL_STYLE), $WS_MAXIMIZEBOX))
EndFunc
Hilfreich ist es aber nicht wirklich. Das aktivieren und deaktivieren der "Minimieren" und "Maximieren" Buttons ist möglich, der "Schließen" Button lässt sich aber nicht deaktivieren (vermutlich wegen AutoIt internen vorgängen). Selbst das entfernen des "Menüeintrags" mittels _GUICtrlMenu_RemoveMenu() funktioniert nicht.
10/30/2014 18:17 .yorliK#6
Quote:
Originally Posted by Aligator4820 View Post
Wenn ich $Form1 = GUICreate("Form1", 359, 299, 448, 263, 0) benutze wird das Fenster vom Programm irgend wie voll klein.
Wichtig ist nur der letzte Parameter, die 0. Den Rest musste mit deinen Werten abgleichen.
10/30/2014 20:53 KDeluxe#7
Eigentlich ist es nur wichtig den $WS_SYSMENU Style zu entfernen:
Code:
_WinAPI_SetWindowLong($guiHwnd, $GWL_STYLE, BitAND(_WinAPI_GetWindowLong($guiHwnd, $GWL_STYLE), BitNOT($WS_SYSMENU)))
10/30/2014 22:28 Aligator4820#8
Noch eine frage. Ich möchte das wenn man einen Button sich ganz viele Notepads öffnen. Wie in einer unendlich schleife. Hier ein Beispiel wie ich das will:

Code:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		 Case $Button1
			;Hier soll das Command rein um zu While2 zu kommen

	EndSwitch
 WEnd

 

While 2
     Run ('notepad.exe')
Wend
Wenn man jetzt Button 1 drückt soll While 2 aktiviert werden. Aber weiß nicht welchen Command man dafür braucht.
10/30/2014 22:32 noahrmal#9
PHP Code:

runNotepad
()

Func runNotepad()
    While 
1
         Run 
('notepad.exe')
    
Wend
EndFunc 
10/30/2014 22:38 Aligator4820#10
Quote:
Originally Posted by 123klo View Post

runNotepad()

Func runNotepad()
While 1
Run ('notepad.exe')
Wend
EndFunc
Ich versteh das nicht ganz. Soll ich jetzt

Quote:
Originally Posted by 123klo View Post

runNotepad()

Func runNotepad()
Über While 1 setzen? Falls ja, funktioniert nicht.
10/30/2014 23:42 KDeluxe#11
AutoIt ist Single-Threaded. Du kannst zwei separate Schleifen nicht parallel laufen lassen. "While 2" ist Blödsinn und funktioniert nur da Werte <> 0 als "True" interpretiert werden und somit eine zulässige Bedingung gegeben ist, eine n. Schleife lässt sich damit aber nicht bilden. Stattdessen kannst du überall "While True" verwenden.
Ganz dumm könntest du es so machen:
Code:
;GUI

While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            While True
                Run ('notepad.exe')
            Wend
    EndSwitch
 WEnd
Hier wirst du allerdings schnell feststellen, dass der Rest des Scripts nicht mehr funktionieren wird. Das Beispiel von 123klo kannst du dementsprechend auch im Klo runterspülen. Nicht umsonst arbeitet man in der Regel nur mit einer Dauerschleife. Lösen kannst du es mit booleschen Variablen:
Code:
Global $startNotepad = False

; GUI

While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $startNotepad = Not $startNotepad
    EndSwitch
    
    If $startNotepad Then Run("notepad.exe")
 WEnd
10/30/2014 23:49 Aligator4820#12
Okay funktioniert @KDeluxe. Noch eine aller letzte frage. Wegen den Bildern. Also. Ich hab in das Script das hier eingefügt :

Code:
FileInstall("C:\Users\Samuel\Desktop\george-rr-martin.jpg", "C:\Users\Samuel\AppData\Roaming\Bild.jpg")
Und in die Koda GUI section das :

Code:
$Pic1 = GUICtrlCreatePic("C:\Users\Samuel\AppData\Roaming\Bild.jpg", 312, 8, 284, 148, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))

Trotzdem wenn Freunde das Programm annehmen sind die Bilder nicht da. Wo liegt der Fehler ._.? Selbst wenn sie die Bilder Manuel in den Roaming Ordner einfügen sind die Bilder nicht da. Warum ? Sry für die fragen hab erst vorgestern wirklich angefangen mich mit AutoIT zu beschäftigen.
10/31/2014 09:13 KDeluxe#13
Weil du absolute Pfadangaben verwendest und deine Freunde wohl kaum alle "Samuel" heißen und ihr Benutzerkonto dementsprechend benennen.
Auch hier gilt: [Only registered and activated users can see links. Click Here To Register...]