Schaust mal in der Hilfe bei WinList nach. Damit kannst z.B. zunächst einmal die sichtbaren Fenster rausfiltern.
Beiträge von teh_hahn
-
-
Wie? Was? Wo? Kenn ich nicht. Du hast also eine kompilierte EXE und willst die ausführen. Da nimmst Du doch einfach die RunOnceExMethode, Tutorial z.B. hier:
http://www.german-nlite.de/guide=ug-runonce-guide -
Xenobiologist : Ich glaube nicht, dass es das ist, was er erreichen möchte, wobei es sicherlich eine mögliche Erweiterung wäre.
@srb: Wenn ich Dich richtig verstehen, möchtest Du einen Bildschirmschoner erstellen, bei dem EIN Bild auf dem Bildschirm bewegt wird.
Folgendes reicht dazu:Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUICloseOnESC", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("MustDeclareVars", 1)Local Const $S_PICTURE = @ScriptDir & "\3IOB_2wallpaper800x600.jpg"
[/autoit] [autoit][/autoit] [autoit]
Local Const $I_CHANGE = 500Local Const $I_GUIWIDTH = @DesktopWidth
[/autoit] [autoit][/autoit] [autoit]
Local Const $I_GUIHEIGHT = @DesktopHeight
Local Const $I_PICWIDTH = 800
Local Const $I_PICHEIGHT = 600
Local $a_orgmousepos = -1
Local $a_curmousepos = -1
Local $h_scrgui = -1
Local $h_scrpic = -1
Local $msg = 0MouseMove($I_GUIWIDTH, $I_GUIHEIGHT, 1)
[/autoit] [autoit][/autoit] [autoit]
$a_orgmousepos = MouseGetPos()
$h_scrgui = GUICreate("Simple Screen Saver", $I_GUIWIDTH, $I_GUIHEIGHT, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)
$h_scrpic = GUICtrlCreatePic($S_PICTURE, 0, 0, $I_PICWIDTH, $I_PICHEIGHT)
GUISetBkColor(000000, $h_scrgui)GUISetState(@SW_SHOW, $h_scrgui)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
$a_curmousepos = MouseGetPos()If $msg == $GUI_EVENT_CLOSE Or $a_curmousepos[0] <> $a_orgmousepos[0] Or $a_curmousepos[1] <> $a_orgmousepos[1] Then
[/autoit] [autoit][/autoit] [autoit]
ExitLoop 1
EndIf
GUICtrlSetPos($h_scrpic, Random(0, $I_GUIWIDTH - $I_PICWIDTH, 1), Random(0, $I_GUIHEIGHT - $I_PICHEIGHT, 1))
Sleep($I_CHANGE)
WEnd
MouseMove($a_orgmousepos[0], $a_orgmousepos[1], 1)
GUIDelete($h_scrgui)Exit (0)
[/autoit]
EDIT: Der Mauzeiger stört natürlich. Habe ich jetzt geändert. Was irgendwie nicht funktioniert ist den Mauszeiger an die ursprüngliche Position zu setzen. Weiß jemand wieso das nicht klappt? -
Ich seh da jetzt nicht so das Problem:
Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]_CVSRead("test.cvs")
[/autoit] [autoit][/autoit] [autoit]Func _CVSRead($s_file)
[/autoit] [autoit][/autoit] [autoit]
Local $i_linecount = 0
Local $h_file = -1
Local $s_line = ""If FileExists($s_file) == 0 Then
[/autoit] [autoit][/autoit] [autoit]
Return(0)
EndIf$i_linecount = _FileCountLines($s_file)
[/autoit] [autoit][/autoit] [autoit]
Local $a_rows[$i_linecount + 1]
$a_rows[0] = $i_linecount$h_file = FileOpen($s_file, 0)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $i_linecount - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
$s_line = FileReadLine($h_file)
If @error == -1 Then
ExitLoop
EndIf
MsgBox(64, "Test", "Inhalt: " & $s_line)
$a_rows[$i] = StringSplit($s_line, ";")
MsgBox(64, "Test", "Inhalt: " & $a_rows[$i])
MsgBox(64, "Test", "Inhalt: " & $a_rows[$i][0])
Next
FileClose($h_file)Return($i_linecount)
[/autoit]
EndFuncWas willst Du überhaupt genau erreichen? poste doch mal Deine CVS-Datei, wenn es geht...
-
bernd670 : LOL, das ist ja geil. Voll das Kopfzerbrechen hier, dabei ist die Läsung wirklich einfach. Schönen Dank, dann kann ich das ja mal in meinen Skripten ändern!!!
-
Klar doch, sorry:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$S_WINTITLE = "Main GUI"
[/autoit] [autoit][/autoit] [autoit]$h_maingui = GUICreate($S_WINTITLE, 394, 375, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
$h_settingsbt = GUICtrlCreateButton("&Settings", 10, 10)GUISetState(@SW_SHOW, $h_maingui)
[/autoit]
While 1
$a_msg = GUIGetMsg(1)
Select
Case $a_msg[0] == $GUI_EVENT_CLOSE
ExitLoop 1
Case $a_msg[0] == $h_settingsbt
GUISetState(@SW_DISABLE, $h_maingui)
$h_settingsgui = GUICreate("Settings GUI", 240, 240, -1, -1, $WS_CAPTION + $WS_SYSMENU, -1, $h_maingui)
GUISetState(@SW_SHOW, $h_settingsgui)
While 1
$a_msg = GUIGetMsg(1)
Select
Case $a_msg[0] == $GUI_EVENT_CLOSE
ExitLoop 1
EndSelect
WEnd
GUIDelete($h_settingsgui)
GUISetState(@SW_ENABLE, $h_maingui)
;~ WinActivate($S_WINTITLE, "")
EndSelect
WEnd
GUIDelete($h_maingui)
Exit(0)Wenn man die auskommentierte Zeile einfügt, so zuckt das Fenster (logisch) und manchmal (bei einem anderen Skript) funktioniert es auch nicht.
-
Hi,
Jedesmal, wenn ich eine Child-GUI lösche, wird die Main-GUI einfach ganz in den Hintergrund gestellt. Woran liegt das? Meine Lösung funktioniert nicht immer und sieht auch unschön aus:
Spoiler anzeigen
[autoit]$h_maingui = GUICreate($S_WINTITLE, 394, 375, -1, -1)
[/autoit]
[...]
$h_settingsgui = GUICreate($S_APPTITLE & ": Settings", 240, 240, -1, -1, $WS_CAPTION + $WS_SYSMENU, -1, $h_maingui)
[...]
GUISetState(@SW_DISABLE, $h_maingui)
GUISetState(@SW_SHOW, $h_settingsgui)
While 1
$a_msg = GUIGetMsg(1)
Select
Case $a_msg[0] == $GUI_EVENT_CLOSE
ExitLoop 1
EndSelect
WEnd
GUIDelete($h_settingsgui)
GUISetState(@SW_ENABLE, $h_maingui)
WinActivate($S_WINTITLE, "")
[...] -
Ja, total einfach, ich war einfach zu verplant. Danke schön. (Muss die Hitze hier sein! :D)
Hier die nochmal von mir angepasste Funktion
Spoiler anzeigen
[autoit]Func _ArrayCount($var, ByRef $a_array, $i_case = 0, $i_start = 0, $i_end = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $i_count = 0If $i_end == 0 Then
[/autoit] [autoit][/autoit] [autoit]
$i_end = UBound($a_array) - 1
EndIfIf $i_case == 0 Then
[/autoit] [autoit][/autoit] [autoit]
For $i = $i_start To $i_end
If $a_array[$i] = $var Then
$i_count += 1
EndIf
Next
ElseIf $i_case == 1 Then
For $i = $i_start To $i_end
If $a_array[$i] == $var Then
$i_count += 1
EndIf
Next
EndIfReturn $i_count
[/autoit]
EndFunc -
Hi,
stehe grade total auf dem Schlauch. Wie kann ich überprüfen wie oft ein String in einem Array steht?
[autoit]$array[0] = "Test"
[/autoit]
$array[1] = "Bla"
$array[2] = "Test" -
Über welches Protokoll willst Du denn eine Broadcast-Meldung versenden? Schick doch einfach eine Nachricht über TCP/IP an die Broadcastadresse Deines Netzes. Die Broadcastadresse ist die Adresse, bei der der Netzteil deiner Adresse überall "1" ist (binär).
Und dann einfach:Spoiler anzeigen
[autoit]Local Const $i_port = 65000
[/autoit] [autoit][/autoit] [autoit]
Local $s_broadcastip = "192.168.0.255"
Local $s_message = "TCP message test!"
Local $i_socket = -1TCPStartup()
[/autoit] [autoit][/autoit] [autoit]$i_socket = TCPConnect($s_broadcastip, $i_port)
[/autoit] [autoit][/autoit] [autoit]
If $i_socket == -1 Then
Exit(-1)
EndIfIf TCPSend($i_socket, $s_message) == 0 Then
[/autoit] [autoit][/autoit] [autoit]
Exit(-2)
EndIfTCPShutdown()
[/autoit]
Exit(0)
Was die einzelnen Empfänger damit aber anfangen sollen, bleibt noch zu überlegen...PS: Mir fällt grade auf: Ich weiß gar nicht, ob die TCP-Funktion von AutoIt sich mit der Broadcastadresse vebrinden kann. Sonst einfach die UDP-Funktionen evrwenden, da klappt das auf jeden Fall!
-
Jau, wenn der erste Kommandozeilenparameter die Datei angeben soll, dann sieht es so aus:
Spoiler anzeigen
[autoit]#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]If $cmdline[0] > 0 Then
[/autoit]
If _FilePrint($cmdline[1], @SW_HIDE) == 0 Then
Exit(-1)
EndIf
Exit(0)
Else
MsgBox(64, "Syntax", @ScriptName & " [FILE]")
EndIf
Macht genau das, was Du in Deiner Ausgangsschilderung möchtest... -
Hi,
es gibt von Microsoft ein Tool, das srvany heißt (srvany.exe). Damit ist es möglich, eine Executable als Dienst zu starten, womit sie schon vor der Anmeldung zur Verfügung steht. Ich weiß allerdings nicht, ob es damit auch möglich ist eine AutoIt-EXE als Dienst zu starten...
-
Hi,
ich habe mal einige Fragen zur ListView, und zwar:
1. Ich verstehe die genauen Auswirkungen einiger Styles nicht. Gibt es irgendwo eine Übersicht mit genaueren Erklärungen, bzw. praktische Beispiele?Spoiler anzeigen
Code
Alles anzeigenListView Styles: $LVS_ICON 0x0000 This style specifies icon view. $LVS_REPORT 0x0001 This style specifies report view. $LVS_SMALLICON 0x0002 This style specifies small icon view. $LVS_LIST 0x0003 This style specifies list view. $LVS_EDITLABELS 0x0200 Item text can be edited in place. Extended ListView Styles: $LVS_EX_DOUBLEBUFFER 0x00010000 $LVS_EX_MULTIWORKAREAS 0x00002000 $LVS_EX_SNAPTOGRID 0x00080000 $LVS_EX_SUBITEMIMAGES 0x00000002 Allows images to be displayed for subitems.
Was mich hier am meisten interessiert ist:Kann man damit Items in eine beliebige Zelle schreiben, oder wie? Ich kannte bisher nur folgendes:
Spoiler anzeigen
[autoit]$a_lviewitems[$i_lviewitemindex] = GUICtrlCreateListViewItem("|Name|Adresse|Telefon", $h_lview))
[/autoit]
GUICtrlSetImage(-1, "IconFile.dll", 0, 0)
Damit erreicht man aber ja lediglich, dass in die erste Spalte das Icon geschrieben wird.Ferner interessiert mich, wie ich es erreiche, dass ich eine CheckBox (am besten 3state [also, gechecked, grey und ungechecked]) in eine Zelle meiner ListView bekomme. Mit
erreiche ich lediglich, dass eine CheckBox in der ersten Spalte erstellt wird, allerdings auch nur 2state.
2. Gibt es irgendwo eine ListView UDF-Sammlung, die noch weitere Funktionen bietet? (Rein interessenhalber...)
3. Wenn wir eben schon bei GUI Styles waren, was bewirken folgende Common Styles?
Spoiler anzeigen
Code$WS_CLIPCHILDREN 0x02000000 Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window. $WS_CLIPSIBLINGS 0x04000000 Clips child windows relative to each other; that is, when a particular child window receives a WM_PAINT message, the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be updated. If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible, when drawing within the client area of a child window, to draw within the client area of a neighboring child window. $WS_CHILD 0x40000000 Creates a child window. A window with this style cannot have a menu bar. This style cannot be used with the WS_POPUP style.
Beziehen sich Styles eigentlich nur aus Aussehen, oder stecken noch andere Dinge dahinter? Was bewirkt das Erstellen eines ChildWindows zu einem Anderen?Ziemlich viele Fragen auf einmal, ich weiß. Aber wäre schon dankbar, wenn ein paar davon beantwortet werden können!
-
Ich sage ja auch gar nicht, dass NFOs illegal sind, noch das man sie mit einer Illegalität verbinden sollte. Ich bin bloß der Meinung, dass man mit dem Einsatzzweck von NFOs vorsichtigen sein sollte. Zum privaten Rumspielen, ausprobieren usw. ist das ja auch eine feine Sache.
Aber komm Deinem Vorgesetzten (Abteilungsleiter, was auch immer) mal mit 'ner NFO (z.B. als ChangeLog)...Ich glaube ja auch nicht, dass das hier die Intention war. Ich wollte es nur anmerken.
-
Ja, eigentlich dienen NFOs ja dazu Informationen zu einem Release mit zu liefern. Diese werden eigentlich ausschließlich in der Warez-(0DAY, MP3 etc.)-Szene genutzt. Es kommt ausschließlich ASCII vor, was hier auch als ASCII-Art (also Kunst) bezeichnet wird.
Ich persönlich würde von einer Nutzung von NFOs für Projekte, Skripte usw. klar absehen, da mit NFOs immer etwas illegales verbunden wird.
-
Hi, hier ein paar Befehle, die hilfreich sein könnten:
- Den Ordner "Drucker und Faxgeräte" öffnen.
- Einstellungen von Drucker öffnen. (Funzt irgendwie aber nicht...)
- Druckerinstallations-Assistent öffnen.
Ein Hinzufügen von Druckern ist über
und entsprechenden Parametern erheblich einfacher. Für die Parameter einfach
eingeben.
Für den Text aus einer Anwendung würde ich beispielsweise:
Spoiler anzeigen
[autoit]ClipPut(GUICtrlRead($h_edit, 1))
[/autoit]
benutzen und dann dies an den Drucker senden (Entweder direkt, wüsste jetzt aber nicht wie, oder doch erst in eine Datei schreiben und dann drucken.). Bei Bildern fällt mir jetzt spontan keine gute Lösung ein. -
monkeys Vorschlag ist korrekt, obgleich ich es so machen würde. (btw: Steht alles in der Hilfe von AutoIt...):
Spoiler anzeigen
[autoit]Local $i_area = 2
[/autoit] [autoit][/autoit] [autoit]
Local $s_shutd = "nein"If $i_area < 1 And $s_shutd = "ja" Then
[/autoit]
Shutdown(9)
EndIf -
Hi, hier mal ein Beispiel wie Du an die (sichtbaren) Fenster kommst. Wie du das Ganze aktivierst bleibt Dir ja überlassen, würde dem Programm einfach einen Trayeintrag verpassen, z.B. "Minimize To Tray (All)" und dann noch einen der alles wieder rückgängih macht.
[autoit]Local $a_windows = -1
[/autoit][autoit][/autoit][autoit]$a_windows = WinList()
[/autoit][autoit][/autoit][autoit]For $i = 1 To $a_windows[0][0]
[/autoit][autoit][/autoit][autoit]
If $a_windows[$i][0] <> "" And BitAND(WinGetState($a_windows[$i][1]), 2) Then
;~ Debug MsgBox
MsgBox(64, "Window Info", "Title=" & $a_windows[$i][0] & @CR & "Handle=" & $a_windows[$i][1])
;~ Hier müsste man das Fenster nun verstecken und AutoIt in den Tray "packen".
WinSetState($a_windows[$i][0], "", @SW_HIDE)
TrayCreateItem($a_windows[$i][0])
EndIf
NextExit(0)
[/autoit] -
Ja, eben nicht. Ich will ja ohne Eingabe suchen. Ich möchte ja, dass automatisch nach Übereinstimmungen gesucht wird und diese dann ausgegeben werden. Also drücke ich später quasi nur auf "Suchen" und er gibt mir alle Ordner aus, die zu einem gewissen Grad Übereinstimmungen im Verzeichnissnamen haben.
-
Hi,
mir ist grade die Idee gekommen, dass man mit Regulären Audrücken doch eigentlich nach Ähnlichkeiten in Ordner- oder Dateinamen suchen müssen könnte. Wäre es dann auch möglich, den Grad der Übereinstimmung festzulegen? Als Beispiel folgendes:
Ordner 1: "F:\Temp\Das_ist_ein_Ordner-Ohne_Leerzeichen"
Ordner 2: "G:\Archiv\Ordner mit Leerzeichen"
Ordner 3: "G:\Archiv_alt\Ein_weiterer_Ordner"
Ordner 4: "G:\Archiv_alt\Ein Verzeichnis"
Ordner 4: "Z:\Netshare\Was völlig anderes"Jetzt will ich aber z.B. in ein Input-Feld nicht "Ordner" oder so eingeben (dann wäre das Ganze ja einfach), sondern ich möchte auf Knopfdruck, dass in von mir festgelegte Ordnern gezielt nach Übereinstimmungen gesucht wird (am Besten unter Einflussnahme des Grades der Übereinstimmung, s.o.). Soll heißen, das beim Druck auf den Button die festgelegten Ordner durchsucht werden und Übereinstimmungen ausgegeben werden. (In diesem Beispiel wären das z.B. alle Verzeichnisse mit dem String "Ordner", alle anderen aber nicht.
Ist das möglich, oder bin ich da auf einer völlig falschen Fährte. Kenne mich auch leider nicht so gut mit RegExp aus...