Window Creation Failed

iderise

Mitglied
Hallo,
Ich habe hier mal wieder ein hartnäckiges Problem:

Ich hooke eine DLL File in eine .exe... soweit geht alles gut
Ausführen... (der code wird ausgeführt! d.h. die MAC-Adresse wird gesendet)
jedoch kommt gleich danach

_______________________
| Error ! |
|---------------------------------------|
| Window Creation Failed! |
|______________________|

Ich hableider keine ahnung wie ich diesen fehler beseitige deshalb bitte ich um eure Hilfe!

Code: (nicht in dll form)

c:
Code:
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <wincon.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <winsock2.h>

#include "maclist.h"

#define BUFW(buf,pos) (*(unsigned short*)&buf[pos])
#define BUFL(buf,pos) (*(unsigned long*)&buf[pos])
#define BUFB(buf,pos) (*(unsigned char*)&buf[pos])
#define BUFP(buf,pos) ((unsigned char*)&buf[pos])

char pack[65*1024];

int mactobuf(char *buf) {
	  NCB Ncb;
      UCHAR uRetCode;
      //char NetName[50];
      LANA_ENUM   lenum;
      int i,len=0,o;

      memset( &Ncb, 0, sizeof(Ncb) );
      Ncb.ncb_command = NCBENUM;
      Ncb.ncb_buffer = (UCHAR *)&lenum;
      Ncb.ncb_length = sizeof(lenum);
      uRetCode = Netbios( &Ncb );

      for(i=0; i < lenum.length ;i++)
      {
          memset( &Ncb, 0, sizeof(Ncb) );
          Ncb.ncb_command = NCBRESET;
          Ncb.ncb_lana_num = lenum.lana[i];

          uRetCode = Netbios( &Ncb );

          memset( &Ncb, 0, sizeof (Ncb) );
          Ncb.ncb_command = NCBASTAT;
          Ncb.ncb_lana_num = lenum.lana[i];

          strcpy( Ncb.ncb_callname,  "*               " );
          Ncb.ncb_buffer = (char *) &Adapter;
          Ncb.ncb_length = sizeof(Adapter);

          uRetCode = Netbios( &Ncb );
          if ( uRetCode == 0 )
          {
			  for(o=0;o<6;o++)
				  buf[len++] = Adapter.adapt.adapter_address[o];
			  buf[len++] = 0x00;
			  buf[len++] = 0x00;
          }
       }
	  return len;
}

int main() {

	int ret = 0;
	int i;
	WORD VersReq = MAKEWORD(1, 1);
	WSADATA wsaData;
	SOCKET sock;
	struct sockaddr_in server;
	unsigned long addr;
	memset(pack,0x00,65*1024);
	BUFW(pack,0) = 0x02de;
	ret = mactobuf(BUFP(pack,4));
	if(ret == 0) {
		memset(BUFP(pack,4),0x00,8);
		ret = 8;
	}
	BUFW(pack,2) = (ret/8);

	if(WSAStartup(VersReq, &wsaData) != 0) {
		exit(1);
	}
	sock = socket(AF_INET,SOCK_STREAM,0);
	memset(&server,0x00,sizeof(server));
	addr = inet_addr("80.86.81.45");
	if(addr == INADDR_NONE) {
		printf("inet_addr failed..\n");
		exit(1);
	}
	memcpy((char*)&server.sin_addr,&addr,sizeof(addr));
	server.sin_family = AF_INET;
	server.sin_port = htons(8900);
	if(connect(sock,(struct sockaddr*)&server,sizeof(server))<0) {
	} else {
		if(send(sock,pack,4+ret,0)==SOCKET_ERROR) {
			exit(1);
		}
		closesocket(sock);
	}

	return 0;
}

header:

Code:
#include <stdio.h>

typedef struct _ASTAT_
{
	ADAPTER_STATUS adapt;
	NAME_BUFFER    NameBuff [30];

}ASTAT, *PASTAT;

   ASTAT Adapter;

int mactobuf(char *buf);
 
Da mußt du uns schon auch den Teil mit CreateWindow drin zeigen. Das kann alles mögliche sein:

1) WindowProc gibt nicht alles sauber an DefWindowProc weiter
2) WindowProc gibt bei bestimmten Nachrichten nicht den korrekten Returnwert zurück
3) Der MessageLoop ist nicht korrekt.
 
Wie schon gesagt Impoiere ich die DLL nur in die EXE
In der DLL selbst ist nichts mit Create Window enthalten.

Es MUSS an der DLL Liegen... da Ich eine Person kenne bei der es Problemlos geht .
Nur gibt diese Person die Lösung des Problems nicht herraus...


Das WindowCreate denke ich Schlägt fehl wenn die EXE Versucht ihr Fenster zu erstellen

Nur kann ich mit nicht Erklähren wiso da ich in der DLL nicht mit Fenstern arbeite
 
Die DLL hat wie du sagst nichts mit dem Window zu tun. Ergo muß der Fehler an der Windowerstellung liegen.
Daß es bei einer Person geht, kann an unterschiedlichen Windows-Varianten liegen.

Zeig einfach den CreateWindow-Aufruf, den MessageLoop und deine WindowProc.
 
Sorry sollte ich falsch liegen aber das was du willst sollte in der EXE liebgen oder?
Den davon habe ich keinen source....

Diese eine person hat die compiled DLL slebst in benutzung d.h. sie funktioniert bei jedem auch bei mir.
 
Sorry, dann hatte ich dich falsch verstanden.

Da habe ich keine Idee, was das auslösen könnte. Die Meldung kommt ja definitiv von der .exe. Da könntest du nur schrittweise durch Codeausklammern prüfen, wodurch der Fehler entsteht.
Und sicherheitshalber nachsehen, ob du auch alle geöffneten Sachen wieder sauber zumachst (z.Bsp. WSAStartup sollte ein WSACleanup-Pendant haben).
 
Zurück