|
Yes it works ! but transparent pixels are black... I think i have to use the mask, but I don't know how...
Yann
|
|
|
|
|
Ok, when I am using the send and recv commands
in the blocking mode I can break the blocking wait with the shutdown
command, but how can I break the blocking listen command?
I use the socket functions (listen, bind, recv... ) in a single thread and
waiting with the listen function for some clients. If the user ends the application I
want to end the thread and for that I want to break the listen command!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
Do you want your app to stop listening for connections?
Simply call closesocket(my_listen_socket)
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
Oh thanks!
But does this also work to break the waiting recv function?
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
You don't do any recv() or send() with your listening socket!
You just accept connections and start I/O with that socket.
I you have an accepted connection and don't want the other side to receive more data from you (server), then just call shutdown(socket, SD_RECEIVE) or if you don't want the other side to be able to send data to you anymore you just pass SD_SEND as second parameter.
Is it clear? If not: I'm till here!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
btw there is also Winsock's asynchronous mode (WSAAsyncSelect ) if you just want to run one thread, it's nonblocking from design.
|
|
|
|
|
your problem is tricky !
when you listen the thread simply freezes ! right ?
you have to do this listening and accepting of clients on another thread :
unsigned _stdcall thAccept(void *lParam)
{
while(true)
{
SOCKET mSock=accept((SOCKET)lParam);
}
return 1;
}
SOCKET sock=create a server ;
UINT thAcc=0;
if(thAcc)
_endthreadex(thAcc);
_beginthreadex(NULL,0,&thAccept,(void*)sock,0,&thAcc);
return 1;
see ...
be cool and rate me
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
How to activate two windows?ie means floating windows or floatpallete?
|
|
|
|
|
Hi,
I've got myself a HWND to a window that I didn't create.
I want to be able to get back to the process that created the window, so that I can enumerate the Modules that it loaded.
Just not sure where to go.
<br />
<br />
HWND hWndAim;<br />
WNDCLASSEX myWin;<br />
<br />
hWndAim = FindWindow("Afx:400000:b:0:0:b0247", "Messages");<br />
GetClassInfoEx(????, "Messages", &myWin);<br />
<br />
Thanks very much
|
|
|
|
|
I don't know how to get the process handle from its window handle, however,
if you know the process name, then use my code
to get the process handle by its name.
Pview.exe shows the loaded dlls for processes.
I sure that you will find the source code of that utility.
|
|
|
|
|
DWORD GetWindowThreadProcessId(hWnd,lpdwProcessId)
this function returns the identifier of the thread that created the function
and if lpdwProcessId is not null it returns also the process id
|
|
|
|
|
Continue to my previous reply:
Forget about pview.exe.
Use EnumProcessModules of PSAPI.dll (supported under WinNT/win2K/WinXP).
Check the following Enumerating All Modules For a Process
|
|
|
|
|
What is the best way to determine the following:
1. Whether a device is installed (and whether it is installed correctly)? [most important question]
2. Whether a device is plugged in?
I am writing an install app, and for point one [most important question] i need to know whether any "found new hardware wizard" windows will pop up.
For point two, i have a function which includes the following code, but it seems to be a pretty rough way of doing it:
do
{
bResult = UpdateDeviceDriver();
} while(bResult != NO_ERROR);
Where UpdateDeviceDriver is a function which encapsulates the newdev ddk function UpdateDriverForPlugAndPlayDevices().
Cheers,
Dave
Cheers,
Dave
|
|
|
|
|
Hi guys,
If I set my timer to a value( say, 1 millisecond). Am I guaranteed to get the event service function called at frequency of 1kHz? My guess is not as following reason.
My impression is: if there is a higher priority process(system process) preempt the CPU at the time of timer interrupting, the service function is simply delayed to next available interrupt. Is it correct?
Thanks
|
|
|
|
|
HI,
timeSetEvent() creates and works in a new thread. So your understanding is correct. But the documentation doesnt says anything about its priority. If the CPU has some other processes more prior to this logically it will not trigger at that moment. There other options like WaitableTimer().
regards,
Sankaran
|
|
|
|
|
He was asking about timeSetEvent(), not WM_TIMER.
|
|
|
|
|
yes, I am asking multimedia timer, which Microsoft claims an "accurate" timer
|
|
|
|
|
How to run db-library programs in Visual Studio?
what changes are required to DB Library in VS?
|
|
|
|
|
how to delete a directory which has sub-directories and files directly?
thanks
includeh10
|
|
|
|
|
Hi,
See this article in CP..
http://www.codeproject.com/file/removefiles.asp
all the best
anju
|
|
|
|
|
it is still to delete files first in a loop ...
includeh10
|
|
|
|
|
|
::SHFileOperation()
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
BOOL ClearDirectory(const char *path, BOOL recurs, BOOL deldirs)
{
if(!path)
return FALSE;
char xpath[512]="";
strcpy(xpath,path);
HANDLE hFile;
WIN32_FIND_DATA findData;
BOOL Go=TRUE;
char fullp[500]="";
char pattern[500]="";
if(xpath[strlen(xpath)-1]!='\\')
strcat(xpath,"\\");
if(!IsDirectory(xpath))
return FALSE;
strcpy(pattern,xpath);
strcat(pattern,"*.*");
hFile=FindFirstFile(pattern,&findData);
while((hFile!=INVALID_HANDLE_VALUE)&&(Go))
{
if((strcmp(findData.cFileName,".")!=0)&&(strcmp(findData.cFileName,"..")!=0))
{
strcpy(fullp,"");
sprintf(fullp,"%s%s",xpath,findData.cFileName);
if(IsDirectory(fullp))
{
ClearDirectory(fullp,recurs,deldirs);
strcat(fullp,"\\");
if(deldirs)
RemoveDirectory(fullp);
}
else
{
SetFileAttributes(fullp,128);
DeleteFile(fullp);
}
}
ZeroMemory((void*)&findData,sizeof(findData));
Go=FindNextFile(hFile,&findData);
}
FindClose(hFile);
if(deldirs)
RemoveDirectory(xpath);
return TRUE;
}
be nice an rate me !
be cool
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
I have a USB device install procedure ready to go, but it relies on the user pressing cancel to the new hardware wizard when it comes up on insertion of the device.
Is there any way to stop the wizard coming up temporarily in code, or is there a way to grab onto the wizard handle and closing it via my program?
Cheers,
Dave
Cheers,
Dave
|
|
|
|