Witam! Pisząc program, natknąłem się na błąd. Zjada mi pierwszą literkę wiadomości. Szukałem co może być nie tak i lipa. Prosiłbym o przejrzenie kodu i wskazanie co może być nie tak:
#include <iostream>
#include <windows.h>
using namespace std;
HWND WindowHandle;
typedef int (WINAPI *SENDPACKET)(DWORD, char*, BOOL, BOOL);
SENDPACKET sendPacket;
HINSTANCE hLib;
void SendPacket(char * cPacket)
{
DWORD PID;
HWND hwnd = FindWindow("Okienko", NULL);
GetWindowThreadProcessId( hwnd, &PID );
sendPacket( PID, cPacket, TRUE, FALSE );
}
void SendMessage(char *text) // wysylanie wiadomosci
{
char cPacket[strlen(text) + 6];
cPacket[0] = (BYTE)strlen(text)+4;
cPacket[1] = 0x00;
cPacket[2] = 0x96;
cPacket[3] = 0x01;
cPacket[4] = (BYTE)strlen(text);
cPacket[5] = 0x00;
for (int i = 0; i < strlen(text); i++)
{
cPacket[i + 6] = (BYTE)text[i];
}
SendPacket(cPacket);
}
int main()
{
hLib = LoadLibrary("packet.dll");
DWORD PID;
HWND hwndt = FindWindow("Okienko",NULL);
GetWindowThreadProcessId( hwndt, &PID );
sendPacket = (SENDPACKET)GetProcAddress(hLib, "SendPacket");
WindowHandle = FindWindow("Okienko", NULL);
if (WindowHandle) cout << "Znalazlem klienta" << endl << endl;
else
{
cout << "Blad! Nie znalazlem klienta, zamykanie..." << endl;
return 0;
}
//---------------------------------------------------------------
char msg[256];
int time;
cout << "Wprowadz wiadomosc:" << endl;
cin.ignore();
cin.getline(msg, 256); //wczytuje wiadomosc
cout << "Odstep czasowy:" << endl;
cin >> time;
while (true)
{
SendMessage(msg);
_sleep(time);
}
return 0;
}
Jeżeli kod w porządku to w takim razie coś jest z biblioteką packet.dll.