danke! Was ein Netzwerk ist und auch ein adhoc NW weiß ich.
Dann hättest du deutlicher Fragen müssen
danke! Was ein Netzwerk ist und auch ein adhoc NW weiß ich.
Dann hättest du deutlicher Fragen müssen
Habe es immer noch nicht verstanden? Geht es darum ein WiFi Netzwerk zu öffnen?
Richtig. Allerdings kein normales über einen Router (Access Point), sondern ein Netzwerk, in dem alle Endgeräte miteinander verbunden sind. Zum Beispiel kann ich mit 2 Wlan fähigen Laptops ein lokales Netzwerk aufbauen, und brauche dafür weder LAN Kabel, noch einen Switch oder einen Router über den der Datenverkehr läuft. Die 2 WLAN-Sticks/Karten sind direkt, und ohne Umwege miteinander verbunden.
Das ganze gibt es dann natürlich auch noch im größeren Stil - mit mehr als nur 2 Laptops.
http://de.wikipedia.org/wiki/Ad-hoc-Netz
Der Drahtlosnetzwerkassistent (oder wie auch immer er heißt) von Windows, bietet ja auch die Möglichkeit Ad Hoc Netzwerke zu erstellen. Dementsprechend sollte das alles auch mit der CMD möglich sein, oder eventuell direkt per DLL-Call.
/Edit: Schau mal hier:
http://www.autoitscript.com/forum/topic/91…wifi-functions/
For/Next macht das Leben einfach:
[autoit]For $i = 5 To 10
MsgBox(0, "", "Zahl: " & $i)
Next
Hier mal ein altes Beispiel von mir leicht abgeändert:
#cs
GDI+ Example - Draw on Transparent & Click-Through GUI
by SEuBo, 24.12.2010
http://www.elitepvpers.de/forum/autoit/9…hirm-malen.html
#ce
#include <Misc.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
;Variablen deklarieren
Local $hGUI, $hGraphics, $hBitmap, $hBackBuffer
;GDI+ initialisieren, DLL für _IsPressed öffnen und ESC als HotKey festlegen
_GDIPlus_Startup()
HotKeySet("{ESC}","_Exit")
;Transparente GUI erstellen
$hDummy = GUICreate("") ; Dummy GUI, damit richtiges nicht in Taskleiste auftaucht.
$hGUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST,$WS_EX_TRANSPARENT),$hDummy)
GUISetBkColor(0xABCDEF, $hGUI)
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255)
;Graphic-Objekt, Pinsel und Backbuffer erstellen und GUI anzeigen
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight, $hGraphics)
$hBackBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
GUISetState(@SW_SHOWNOACTIVATE)
_GDIPlus_GraphicsDrawString($hBackBuffer,@IPAddress1,500,500,"Arial",30)
_GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
While Sleep(10)
WEnd
Func _Exit()
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
GUIDelete($hGUI)
Exit
EndFunc
[OffTopic]
@Faweyr: Mit welcher, mir bisher unbekannten, Version der ungarischen Notation bist du denn auf $hArray und $hRandom gekommen?
Stell mir grade vor, wie ich 2000 Zeilen durchkämpfen muss, in denen sich jede Variable mit dem selben Datentyp ausgibt *brrr*
[/OffTopic]
ich hab keine erklärung dafür, da es sonst funktioniert.
Ich schon.
Kann es sein, dass $RunningApplication[0] leer ist?
TrayTip("test (nicht leer)","test",2,1)
Sleep(5000)
TrayTip("test (leer)","",2,1) ; <- wird ausgelassen, weil text-parameter leer ist
Sleep(5000)
TrayTip("test (nicht leer 2)","test",2,1)
Sleep(5000)
Das Problem ist, dass 32 Bit Anwendungen umgeleitet werden. Windows stellt für 64-Bit Programme nun den Ordner .\Windows\System32 zur Verfügung. Versucht ein 32-Bit Programm auf diesen Ordner zuzugreifen, wird es von Windows umgelenkt: Nach .\Windows\SysWOW64\.
Nun scheint es genau dort Komplikationen zu geben. Lange Rede kurzer Sinn:
Wenn man die Umleitung von Windows deaktiviert, funktioniert auch der Aufruf der Bildschirmtastatur.
Local $iState
If @CPUArch = "X64" And Not @AutoItX64 Then
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "ptr", $iState)
EndIf
ShellExecute("osk")
[/autoit][autoit][/autoit][autoit][/autoit][autoit]If @CPUArch = "X64" And Not @AutoItX64 Then
DllCall("kernel32.dll", "int", "Wow64RevertWow64FsRedirection", "dword", $iState)
EndIf
mit ftp isses leichter
Wenn dich die Lösung eh nicht interessiert, dann frag auch nicht .
Zuerst liest du das Bild binär ein. Dazu öffnest du das Bild mit FileOpen() im Binary Mode (F1-Hilfe ;)). Danach liest du den Inhalt der Bilddatei mit FileRead() aus.
Jetzt kannst du mit den TCP oder UDP Befehlen die Binärdaten des Bildes übertragen. Der Server muss zuerst mit TCPListen() auf eine Verbindung warten, die der Client mit TCPConnect() aufbaut. Diese Verbindung wird dann vom Server akzeptiert TCPAccept() - nun können Daten gesendet werden. Mit TCPSend() sendest du also den Binärstring des Bildes, den die andere Seite mit TCPRecv() empfängt. Ist die Datenübertragung komplett, kann auf der Empfängerseite das Bild zusammengesetzt werden.
Hier also auch wieder eine Datei im Binärmodus + Schreibmodus öffnen, und den empfangenen Binärstring reinschreiben. Datei schließen und fertig.
Hier quasi nochmal das gleiche wie bereits von XovoxKingdom gepostet - allerdings ist hier die "Berechnung" des Flags evtl. verständlicher.
Local $iFlag = 0
If IsArray($aArray_1) Then $iFlag += 1
If IsArray($aArray_2) Then $iFlag += 2
If IsArray($aArray_3) Then $iFlag += 4
Switch $iFlag
Case 0
; Kein $aArray_n ist Array.
Case 1
; $aArray_1 ist der einzig gültige Array.
Case 2
; $aArray_2 ist der einzig gültige Array.
Case 3
; $aArray_1 und $aArray_2 sind gültig.
Case 4
; $aArray_3 ist der einzig gültige Array.
Case 5
; $aArray_1 und $aArray_3 sind gültig
Case 6
; $aArray_2 und $aArray_3 sind gültig
Case 7
; $aArray_3, $aArray_2 und $aArray_1 sind gültig.
EndSwitch
@ SEuBo
Danke für die Antwort; das geht aber wohl leider nicht, weil die Links (fast ausnahmslos) dynamisch erstellt werden, und es kein festes Muster gibt. Hätte viel Tipparbeit erspart.Danke Euch noch einmal für die Beiträge.
Ob ich jetzt ALLE Links auslese, und dann die lösche, die ein bestimmtes Wort enthalten, oder ob ich alle Links auslese, die ein bestimmtes Wort nicht enthalten: Das Ergebnis ist ABSOLUT das selbe - mit dem Unterschied, dass eine der beiden Varianten kürzer und performanter ist.
Jedoch wird ja nur das erste angezeigt, wie mache ich es nun das mehrere Ergebnisse ausgegeben werden?
Du könntest zum Beispiel probieren etwas anderes auszugeben, als nur das erste Element? Man kööönte ja die MsgBox(0, "", $title[0]) durch ein _ArrayDisplay($title) austauschen.
Einfach bei WinMove Width und Height angeben, dann wird das Fenster entsprechend vergrößert.
Beispiel:
[autoit]ShellExecute("notepad")
WinWait("Unbenannt - Editor")
WinMove("Unbenannt - Editor","",100,-500,800,1000)
[/autoit][autoit][/autoit][autoit]Sleep(3000)
WinKill("Unbenannt - Editor")
Beachtet man deine Aussage, dass du ein Spiel screenshotten willst, sollte man dich auf die Forenregelnhinweisen. Ungeachtet dessen ist die Funktion schon ziemlich richtig - die Stelle, an der du Sie aufrufst (Viel Besser: Dein ganzer Code - hier hat's niemand nötig deinen Code zu klauen ) interessiert uns viel mehr.
LG
Hallo,
Der Gedankengang ist richtig - Allerdings ist da ein kleiner Fehler:
Ubound() gibt die Anzahl der Zeilen in einem Array wieder, nicht die Nummer des letzten Elements.
Bei einem Array mit 10 Zeilen, wäre die erste Zeile #0 und die letzte Zeile #9.
Richtig wäre also:
For $i = 0 To Ubound($aArray) - 1
; ...
Next
_FileListToArray gibt übrigens die Anzahl der Treffer in $aArray[0] aus. Deswegen würde "For $i = 1 To Ubound($aArray) - 1" oder "For $i = 1 To $aArray[0]" beides stimmen.
#include <File.au3>
#include <Array.au3>
$sFolder = @DesktopDir
; Besser: Statt $folder, $sFolder verwenden.
; so erkennt man direkt, dass es eine String-Variable ist.
$aDir = _FileListToArray($sFolder, '*.pdf')
; Hier das gleiche in Grün: $aDir statt $dir für einen Array
; $array= _FileListToArray($folder,$dir,'*pdf')
; Diese Zeile verstehe ich nicht? Willst du auch alle Unterordner
; durchsuchen?
For $i = 1 To UBound($aDir) - 1
; $i statt $x als Zählervariable in Schleifen. Ist in der
; Programmierung allgemein üblich, zuerst $i und dann $j zu belegen.
; Und alles was nicht von der "Norm" abweicht verbessert den Lesefluss
MsgBox(0, "", "Die nächste Datei ist:" & _
@CRLF & "'" & $aDir[$i] & "'")
Next
MfG
Ich benötige es intern zum Cachen; dabei dürfen aber nicht alle gefunden Links geladen werden.
Dann les' doch einfach nur die Links aus, die deinen Vorstellungen entsprechen. StringRegExp ist hierfür ein sehr mächtiges Werkzeug, dass dir einige Zeilen Code ersparen kann.
#include <Array.au3>
; Quelltext der Seite auslesen (alternativ _IEBodyReadHtml)
$sHTML = BinaryToString(InetRead("http://www.autoit.de",1),4)
ClipPut($sHTML)
; Lese alle Links aus, die 'page=' oder 'form=' enthalten
$aLinks = StringRegExp($sHTML,'href="([^"]*(?:page=|form=)[^"]*)',3)
_ArrayDisplay($aLinks)
; Lese alle Links aus, die weder 'page=' noch 'form=' enthalten
$aLinks = StringRegExp($sHTML,'href="((?:[^"](?!page=|form=))+)"',3)
_ArrayDisplay($aLinks)
Wenn du dir schon im Voraus nur die Daten holst, du du brauchst, brauchst du auch nicht filtern, und kannst genau die richtigen Daten mit einem einzigen simplen Schleifenvorgang durchgehen
1. Ich möchte mit dem IE ($oIE) mehrere Seiten gleichzeitig, bzw in kurzem Abstand öffnen.
Warum mit dem IE? Würdest du WinHttp oder (Web)TCP benutzen sparst du dir ne Menge
1. Arbeitsspeicher
2. Prozessorauslastung
3. Zeit
Ganz einfach würde es statt mit WinHttp & co auch mit InetRead / InetGet gehen - sogar gleichzeitig.
Da alle 4 textbasiert sind, sparst du dir auch das laden von Werbung, Bildern, Flash, JavaScript, Videos usw - du bekommst nur den Quelltext der Seite zurück.
2. Dann warten bis bestimmte Dateien, (deren jeweiliger Dateiname einen bestimmten String enthält) in den temporären Internet Dateien gelandet ist. Dann sollte sich diejenige Seite/Tab wieder schliessen
(2. wäre nicht ganz so wichtig, aber nett zu haben)
Was für Dateien? Warum liest du nicht einfach den (in Schritt 1 angesprochen) Quelltext der Seite aus, liest die Links der Dateien aus und lädst Sie selbst herunter?
[autoit]3. Sollen dann die Dateien aus dem Cache an einen anderen Ort kopiert werden (nicht so kompliziert), (und nach Links durchsucht werden, komplizierter)
StringRegExp
[/autoit]Wenn man die Befehle (egal welches Tutorial lernt)
kann man das dann in Autoit verwenden?
Ich bin dann auch mal so dreist und werbe direkt für das AutoIt-StringRegExp Tutorial
StringRegExp Tutorial / Reguläre Ausdrücke in AutoIt
Nicht perfekt, aber für einen Einstieg wahrscheinlich sehr hilfreich.
Das genannte Buch kann ich wirklich nur empfehlen, obwohl ich bisher nur die englische Ausgabe "Mastering Regular Expressions" kannte.
http://www.amazon.de/exec/obidos/AS…egularexpr0a-21
Also erstmal : Wie kommst du auf WM_Command? Das kannst du auch mit GUIGetMsg() abfragen. Der OnEvent Modus (Siehe dazu die AutoIt-Hilfe z. Thema GUI Konzepte.) eignet sich allerdings unter Umständen besser dafür.
Hier wäre ein Beispiel mit GUIGetMsg, welches Dummy-Controls nutzt.
[autoit]$hGUI = GUICreate("")
GUISetState()
$cDummyStart = GUICtrlCreateDummy()
For $i = 1 To Random(10, 15, 1)
GUICtrlCreateButton("Button " & $i, 20, ($i) * 20, 100, 15)
Next
$cDummyEnd = GUICtrlCreateDummy()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $cDummyStart To $cDummyEnd
MsgBox(0, "", "Du hast auf Button " & $nMsg - $cDummyStart & " geklickt.")
EndSwitch
WEnd