Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unknown Directive Message (https://www.delphipraxis.net/148403-unknown-directive-message.html)

Astat 1. Mär 2010 15:01

Re: Unknown Directive Message
 
Hallo sirius, ich glaub mal @jokerfacehro vermischt da Windows Messages mit Socket Callbacks. :gruebel:

@jokerfacehro, sollen es nun Callbacks oder Windows Messages sein?

lg. Astat

jokerfacehro 1. Mär 2010 15:06

Re: Unknown Directive Message
 
da mein quellcode sehr ähnlich zu deinem ist astat und ich eh mit messages arbeiten wollte, probier ich das erstmal ^^

mit callbacks bin ich jetz noch nicht so beleckt und werd mir dazu erstma was durchlesen

jokerfacehro 2. Mär 2010 09:16

Re: Unknown Directive Message
 
hab grad mal geschaut,

das Handle von CreateWindowEx ist 0.
hab keine erklärung dafür :shock:

Delphi-Quellcode:
WC:TWndClassEX=(cbSize:SizeOf(WC);
     lpfnWndProc:@WndProc;
     lpszClassName:'0');

...


RegisterClassEx(wc);

winhwnd:=CreateWindowEx(0,'0','',0,0,0,0,0,0,0,hInstance,NIL);

sirius 2. Mär 2010 09:18

Re: Unknown Directive Message
 
Na dann schau mal was getlasterror bzw. syserrormessage(getlasterror) mit sysutils sagt.

jokerfacehro 2. Mär 2010 09:21

Re: Unknown Directive Message
 
1400: Ungültiges Fensterhandle

jokerfacehro 2. Mär 2010 09:59

Re: Unknown Directive Message
 
jemand ne idee warum das nicht hinhaut ?

sirius 2. Mär 2010 10:04

Re: Unknown Directive Message
 
Kann es sein, dass dein Name zu kurz ist, und deswegen der Wert als Atom und nicht als String angesehen wird?

Versuche es doch mal mit mindestens 4 Zeichen.

jokerfacehro 2. Mär 2010 10:22

Re: Unknown Directive Message
 
du meinst den WindowName ? oder den ClassNAme ?

Edit, hab beides geändert und keine auswirkung auf das handle


muss ich vielleicht noch en parent handle angeben ?
von der anwendung oder so ?

sirius 2. Mär 2010 10:25

Re: Unknown Directive Message
 
Kannst du mal bitte den kompletten Codeteil zur Erstellung des Fensters reinstellen.

jokerfacehro 2. Mär 2010 10:28

Re: Unknown Directive Message
 
jop :)


Delphi-Quellcode:


function WndProc(hWnd: HWND; Msg: UINT; wp: WPARAM;
lp: LPARAM): integer; stdcall; forward;


var

WC:TWndClassEX=(cbSize:SizeOf(TWndClassEX);
     lpfnWndProc:@WndProc;
     lpszClassName:'ATestWndClassEx');




function WndProc(hWnd: HWND; Msg: UINT; wp: WPARAM;
lp: LPARAM): integer; stdcall;
var str:string;
begin
   Result := 0;
  case Msg of

    WM_MY_SOCKET_DATA:
      begin
        setLength(str,1024);
        FillChar(str,Length(str),#0);
        recv(FSocket,str,Length(str),0);
        Showmessage(str);
        //-- WMOnAsyncServerData(wp, lp);
      end;
    WM_MY_SOCKET_ERROR:
      begin
        //-- WMOnAsyncServerError(wp, lp);
      end;
    WM_MY_SOCKET_LOGON:
      begin
        //-- WMOnAsyncServerLogon(wp, lp);
      end;
    WM_MY_SOCKET_CLIENT_DISCONNECT:
      begin
        //-- WMOnAsyncServerDisconnect(wp, lp);
      end;
    WM_CLOSE:
      begin
        DestroyWindow(winhwnd);
      end;
    WM_DESTROY:
      begin
      end;
    else
      Result := DefWindowProc(winhwnd, Msg, wp, lp);
      end;
end;



procedure connectSock(Socket:TSocket;IP:string;Port:Integer);
var SockAddr: TSockAddrIn;
    AddrLen: Integer;

begin
RegisterClassEx(wc);

{winhwnd:=CreateWindowEx(WS_EX_TRANSPARENT  ,
    wc.lpszClassName, '', WS_DISABLED, 0, 0, 0, 0, 0, 0,
      hInstance, nil);// }
winhwnd:=CreateWindowEx(WS_EX_TRANSPARENT,wc.lpszClassName,'12345',0,0,0,0,0,0,0,hInstance,NIL);



Showmessage(syserrormessage(getlasterror));


  AddrLen := SizeOf(SockAddr);
  SockAddr.sin_family := AF_Inet;
  SockAddr.sin_port := htons(Port);
  SockAddr.sin_addr.S_addr := inet_addr(PChar(IP));

  if Connect(Socket, SockAddr, AddrLen) = Socket_Error then
    HandleError;


 { if WSAAsyncSelect(FSocket, winhwnd, WM_mySocket,
    FD_READ or FD_CLOSE or FD_WRITE)= SOCKET_ERROR then
    HandleError;    }
end;


begin

...

connectSock(FSocket,'127.0.0.1',12345);

...

end;



Edit: ich habe für classname mal wc.lpszClassName eingetragen,w as ich vorhin auch schon versucht hatte.
aber irgendwie funktioniert es jetzt


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz