![]() |
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 |
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 |
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); |
Re: Unknown Directive Message
Na dann schau mal was getlasterror bzw. syserrormessage(getlasterror) mit sysutils sagt.
|
Re: Unknown Directive Message
1400: Ungültiges Fensterhandle
|
Re: Unknown Directive Message
jemand ne idee warum das nicht hinhaut ?
|
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. |
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 ? |
Re: Unknown Directive Message
Kannst du mal bitte den kompletten Codeteil zur Erstellung des Fensters reinstellen.
|
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 04:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz