1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Shadowigor

Beiträge von Shadowigor

  • Word und Control

    • Shadowigor
    • 22. November 2011 um 19:25

    Mach das ganze doch besser über ein COM-Objekt. Du solltest dir dazu mal das Hieransehen.

    Gruss Shadowigor

  • "Verschlüsselte" Daten über TCP senden ist fehlgeschlagen.

    • Shadowigor
    • 20. November 2011 um 19:47

    Das stimmt so nicht. Sind noch ein paar Fehler da. Richtig ists so:

    [autoit]

    Local $sRecv = ""

    [/autoit][autoit][/autoit][autoit]

    Do
    $sRecv &= TCPRecv ($Socket, 4096) ; &= damit alles aneinandergehängt wird
    Until $Recv = "" ; Man will ja warten bis nichts mehr kommt

    [/autoit][autoit][/autoit][autoit]

    FileWrite (@DesktopDir & "\TestWave.wav", $sRecv)
    SoundPlay (@DesktopDir & "\TestWave.wav", 1)

    [/autoit]


    Gruss Shadowigor

  • "Verschlüsselte" Daten über TCP senden ist fehlgeschlagen.

    • Shadowigor
    • 20. November 2011 um 15:12

    Also bei der 2. Variante verschickst du eine Variable die dort gar nicht existiert. Was du bei der ersten Variant aber machen willst scheint mir etwas schleierhaft. Wieso verschickst du denn das Handle? Ist das nur ein Schreibfehler? Wenn nein, weis ich nicht was du damit anfangen willst. Denn dem Empfänger wird dein Handle rein gar nichts bringen.


    Gruss Shadowigor

  • Variable mit shellexeute verbinden

    • Shadowigor
    • 4. November 2011 um 17:24

    Lass dir mal $line anzeigen. Denn eigentlich müsste es gehen. Wenn das stimmt mach mal ein ASCII-Array draus und prüf das. Vielleicht sind noch wo nicht-druckbare Zeichen.

    PS. Hab schon mal sowas geschrieben (Hier).

    Gruss Shadowigor

  • Pixelgeneues Editieren eines Pixels im selbst geöffneten Fester/Bitmap

    • Shadowigor
    • 22. Oktober 2011 um 17:04

    GDI+ ist in Windows inbegriffen und kannst du jederzeit nutzen.
    GDI+ sollte dir schon helfen, kenne mich jetzt aber zu wenig aus für ein konkretes Beispiel.

    Gruss Shadowigor

  • [HELP] [GELÖST] Ständiges auslesen stoppen, dass z.B. nur 1x ein Traytipp kommt

    • Shadowigor
    • 16. Oktober 2011 um 18:34

    So schwer ist das nicht:

    [autoit]

    While 1
    If GUICtrlRead($Input1) = GUICtrlRead($Input2) Then
    TrayTip("Dein", "TrayTip")
    GUICtrlSetState($Button, @SW_ENABLE)
    EndIf
    WEnd

    [/autoit]


    Gruss Shadowigor

  • Stringsuch Befehl

    • Shadowigor
    • 16. Oktober 2011 um 14:23

    _StringBetween($sDeinString, "User-Agent:", @CRLF)

    Gruss Shadowigor

  • #Require Admin erzwingen

    • Shadowigor
    • 16. Oktober 2011 um 12:51

    Das Programm schliesst sich automatisch wenn er #RequireAdmin ablehnt.

    Gruss Shadowigor

  • Client und Server Anwendung

    • Shadowigor
    • 16. Oktober 2011 um 12:49

    Also kurz nochmal zu den Punkten:
    1. Ich nahm an dass das so sein sollte. Aber wenn du "ende" gesendet hast hat er nur das Socket geschlossen, die Schleife ist aber weitergegangen.
    2. Listen ist nur einmal vor dem verbinden nötig. danach musst du accept in eine schleife packen bis sich der client connected hat. Dann geht das Script ganz normal weiter
    Beispiel:

    [autoit]

    TCPStartup()
    $idListen = TCPListen(@IPAddress1, 50000)
    Do
    $idSocket = TCPAccept($idListen)
    Until $idSocket <> -1
    ; Dann geht das Script weiter

    [/autoit]

    Nun zu deinem Problem mit dem File:
    FileRead liest immer die nächsten z.B. 2048 Zeichen ein. Dafür musst du es aber mit FileOpen öffnen. Sonst fängt er immer wieder von vorne an.
    Also kannst du das in eine Schleife packen:

    [autoit]

    $hFile = FileOpen("Pfad zur Datei", 0) ; Öffnet die Datei im Lese-Modus (0)
    Do
    $sText = FileRead($hFile, 2048) ; Liest immer die nächsten 2048 Zeichen ein
    TCPSend($idSocket, $sText) ; und sendet diese
    Until $sText = "" ; Widerholt das bis das Ende des Files erreicht ist

    [/autoit]

    Ich hoffe ich konnte dir helfen.

    Gruss Shadowigor

  • Client und Server Anwendung

    • Shadowigor
    • 16. Oktober 2011 um 01:19

    Klar geht das nicht:

    1. Du kommst gar nie aus dieser Schleife (Server).
    2. In der schleife machst du jedes mal Listen und accept.
    3. Du liest nur die ersten 2048 Zeichen ein die du dann verschickst.
    4. Du hast beim Client keine Schleife beim TCPRecv (der wartet nicht von alleine bis was kommt).
    (5. Das Sleep ist nicht nötig)
    (6. Es ist einfacher wenn di @IPAddress1 nimmst bei TCPListen)

    Ich finde das sind schon recht viele Punkte. Korrigier die mal und dann sehen wir weiter.

    Gruss Shadwigor

  • Text in Dateien schreiben und hinterher durch Programm, als Prozess im Hintergrund, auslesen.

    • Shadowigor
    • 15. Oktober 2011 um 18:03

    Speicher den doch in einer .ini. Dann kannst du den gleich mit IniRead auslesen.

    Gruss Shadowigor

  • Client und Server Anwendung

    • Shadowigor
    • 15. Oktober 2011 um 17:06

    Meinst du mit Daten Dateien?

  • Problem mit ControlListView

    • Shadowigor
    • 12. Oktober 2011 um 18:27

    Versuchs mal mit ControlClick. Vielleicht klappts so besser.

    Gruss Shadowigor

  • Script hängt sich auf bei DllCall

    • Shadowigor
    • 11. Oktober 2011 um 21:19

    Hallo Leute

    Ich hab mal ne kleine TCP-Dll geschrieben (zum Test. Wird noch erweitert) und wollte Sie testen. Also die Dll wird definitiv ausgeführt. Das hab ich rausgefunden indem ich ne MessageBox in die Dll eingefügt habe und die wurde auch aufgerufen ^^. Die MsgBox meines AutoIt Scripts wurde aber leider nicht angezeigt :pinch:. Das Script läuft erfolgreich bis ein return in der Dll kommt. Dann läuft es noch ein wenig und hängt sich dann auf ohne MsgBox.

    Hier das Script:

    Spoiler anzeigen
    [autoit]

    $hDll = DllOpen($sPath) ; Und ja $sPath habe ich definiert ; )
    $aSocket = DllCall($hDll, "int", "StartupClient", "str", @IPAddress1, "int", 50000)
    MsgBox(0, "Return", @error)
    DllClose($hDll)
    Exit

    [/autoit]


    Und die Dll:

    Spoiler anzeigen
    C
    #pragma comment(lib, "Ws2_32.lib")
    #include <WinSock2.h>
    #include <Windows.h>
    
    
    SOCKET idSocket[1];
    char *szBuf;
    int i = 0;
    
    
    extern "C" int __declspec(dllexport) StartupClient (char *sIP, int iPort)
    {
    	WSADATA wsa;
    	SOCKET* idSocket = new SOCKET[i++];
    	SOCKADDR_IN tAdr;
    
    
    	WSAStartup(MAKEWORD(2,0), &wsa);
    
    	idSocket[i] = socket(AF_INET, SOCK_STREAM, 0);
    	if(idSocket[i] == INVALID_SOCKET)
    		return 0 - WSAGetLastError();
    
    
    	memset(&tAdr, 0, sizeof(SOCKADDR_IN));
    	tAdr.sin_family = AF_INET;
    	tAdr.sin_port = htons(iPort);
    	tAdr.sin_addr.s_addr=inet_addr(sIP);
    
    
    	if(connect(idSocket[i], (SOCKADDR*) & tAdr, sizeof(SOCKADDR)) == SOCKET_ERROR)
    		return 0 - WSAGetLastError();
    		// sprintf (buffer, "%i", WSAGetLastError());
    		// MessageBoxA(NULL, (LPCSTR)buffer, "", 0);
    	return i;
    }
    
    
    extern "C" int __declspec(dllexport) StartupServer (int iPort)
    {
    	WSADATA wsa;
    	SOCKET idSocketListen;
    	SOCKET* idSocket = new SOCKET[i++];
    	SOCKADDR_IN tAdr;
    
    
    	WSAStartup(MAKEWORD(2,0), &wsa);
    
    
    	idSocketListen = socket(AF_INET,SOCK_STREAM,0);
    
    
    	memset(&tAdr, 0, sizeof(SOCKADDR_IN));
    	tAdr.sin_family = AF_INET;
    	tAdr.sin_port = htons(iPort);
    	tAdr.sin_addr.s_addr = INADDR_ANY;
    	if(bind(idSocketListen, (SOCKADDR*) & tAdr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
    		return 0 - WSAGetLastError();
    
    
    	if(listen(idSocketListen, 10) == SOCKET_ERROR)
    		return 0 - WSAGetLastError();
    
    
    	idSocket[i] = accept(idSocketListen, NULL, NULL);
    	if(idSocket[i] == INVALID_SOCKET)
    		return 0 - WSAGetLastError();
    
    
    	return i;
    }
    
    
    extern "C" int __declspec(dllexport) TCPSend (int j, const char *szToSend)
    {
    	if(send(idSocket[j], szToSend, strlen(szToSend), 0) == SOCKET_ERROR)
    		return 0 - WSAGetLastError();
    	return 1;
    }
    
    
    extern "C" char __declspec(dllexport) *TCPRecv (int j, const int iLen)
    {
    	szBuf = new char[iLen];
    
    
    	if(recv(idSocket[j], szBuf, iLen, 0) == SOCKET_ERROR)
    		return 0;
    	return szBuf;
    }
    
    
    extern "C" void __declspec(dllexport) TCPShutdown (SOCKET idSocket)
    {
    	closesocket(idSocket);
    	WSACleanup();
    	return;
    }
    Alles anzeigen


    Hat wer ne Idee woran das liegt?

    Gruss Shadowigor

  • progandy hat Geburtstag!

    • Shadowigor
    • 11. Oktober 2011 um 17:30

    Auch von mir alles gute! :thumbup:

  • TCPProblem beim Router

    • Shadowigor
    • 9. Oktober 2011 um 21:03

    Also. Erstens sollte dein TCPRecv eigentlich gar nie einen @error auslösen wenn alles richtig läuft. Der käme höchstens wenn du das Client Socket schliesst (bin ich mir nicht sicher).
    Ausserdem bin ich mir nicht ganz sicher ob du bei Listen nicht die öffentliche IP angeben musst (_GetIP()). Damit hab ich selber noch so meine Probleme...
    Versuch mal das zu ändern. Wenns dann immer noch nicht funktioniert, muss ichs mir noch mal anschauen ob ich noch was finde.

    Gruss Shadowigor

  • Aus einem String Textzeile isolieren

    • Shadowigor
    • 9. Oktober 2011 um 16:45

    So z.B.:

    $sString = _StringBetween($sende1, "$GPRMC", "$")

    Gruss Shadowigor

  • problem: hex - values per udp verschicken.

    • Shadowigor
    • 9. Oktober 2011 um 16:40

    $ipX ist schon die IP. Die musst du nicht mit TCPNameToIP auflösen.

  • Abbruch Button der GUI funktioniert nicht

    • Shadowigor
    • 9. Oktober 2011 um 13:27

    Also so wie ich das sehe, sollte sich dein GUI und das Programm schliessen, sobald kein Ereignis mehr stattfindet (Case 0). Ist das gewollt?
    Sonst siehts gut aus. Wann soll er denn den zweiten Case ausführen?

    EDIT: Ok, so funktionierts auch.

  • Label und $GUI_WS_EX_PARENTDRAG

    • Shadowigor
    • 9. Oktober 2011 um 00:17

    Dann nimmst du am besten ein leeres Label und machst es mit GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) Transparent, wenn es das ist was du suchst.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™