|
I think you've done WaitFor...() in the same thread
as your windows message loop. If you want to do a wait
and still process messages, you'll need to do that wait
in another thread, and then when the wait completes
post a message to your main thread (the one with the
message loop) so that the main thread can do what it
needs to do.
Stephen Kellett
--
C++/Java/Win NT/Unix variants
Memory leaks/corruptions/performance/system problems. UK based.
Problems with RSI/WRULD? Contact me for advice.
|
|
|
|
|
I only want special messages and the most basic ones to be let through. I want WM_TIMER and WM_PAINT, and a couple of user defined messages. This is because the spawned process needs to use those special messages to get data from my app. I don't want the user to be able to interact with my program while the spawned process is running.
I was under the impression that MsgWaitForMultipleObjects() could perform a wait while letting messages through, but that seems to do the same as WaitForSingleObject() - it stops message processing.
Any ideas?
|
|
|
|
|
Try something along this line:
LPSTR cmdLine;
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo = {0};
StartupInfo.cb = sizeof(STARTUPINFO);
if (::CreateProcess(NULL, cmdLine, NULL, NULL, FALSE,
0, NULL, NULL, &StartupInfo, &ProcessInfo))
{
DWORD dwStatus = STILL_ACTIVE;
while (dwStatus == STILL_ACTIVE)
{
::GetExitCodeProcess(ProcessInfo.hProcess, &dwStatus);
Sleep(1000);
}
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
}
You may need/want to use peekMessage and TranslateMessage inside the while loop in order to intercept messages.
|
|
|
|
|
Okay, Tomasz said you how get the hProcess...
If you want to Know if the application is still running, you need to use the following.
DWORD dwExitCode;
GetExitCodeProcess(hProcess, &dwExitCode);
If the application is still running dwExitCode returns STILL_ACTIVE
Cheers!!!
Carlos Antollini.
|
|
|
|
|
It worked perfectly, thanks!
|
|
|
|
|
> so if my hInst is an EXE, how on Earth do I get the
> process handle it belongs to?
On Earth you use GetCurrentProcess. Not sure about other celestial bodies.
Cheers,
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
Oops, I guess I was rambling on a bit there - I wanted to get the process of ANOTHER EXE, the one that I run from my code - GetCurrentProcess() is for the process of MY app, the original one - you already gave me the right answer, and that is to run the other EXE with ShellExecuteEx(), which gives the process handle.
|
|
|
|
|
HEllo,
In
I want to know what control should i use,
which can include an internet address,
so whenever the user press on it,
the Explorer is automticly opend and goto that address.
Thaks
|
|
|
|
|
This is commonly called a hyperlink control. I don't know if there are any on CodeProject (you need to search), but I know there are DEFINITELY at least 3 different classes on CodeGuru (yeah, I know - ya boo sucks to CodeGuru, but I just happen to know they're there ).
|
|
|
|
|
You have in codeproject the CHyperlink Class writed for Chris Maunder.
http://www.codeproject.com/miscctrl/hyperlink.asp
Or you can make the following...
hInst = ShellExecute(NULL, "open", strURL, NULL,NULL, nShowCmd);
Cheers....
Carlos Antollini.
|
|
|
|
|
|
I am sorry. but this site is GOOD.
http://www.MintMail.com/?m=640901
|
|
|
|
|
I am sorry, but you are a moron. The site is crap, all sites like it are crap, and people who spam these get rich quick schemes over the Internet are also crap.
Christian
#include "std_disclaimer.h"
People who love sausage and respect the law should never watch either one being made.
The things that come to those who wait are usually the things left by those who got there first.
|
|
|
|
|
Itoa always crashes! Presumably something to do with how the char* is initialised.
// tried char* = "";
char* c = NULL;
itoa(vec[3],c,10);
MessageBox(c);
Thanks in advance
Charlie
|
|
|
|
|
You need to allocate memory to c before calling itoa and then free it after you've done with it.
char* c;
c = new char[11];
itoa(vec[3],c, 10);
delete [] c;
Michael
|
|
|
|
|
|
That's the way I do it, too.
It works fine
|
|
|
|
|
Good Day.
Im new to vc/services and ie automation.
How can i possibly automate ie in a winnt/win2k service to open a page in a local drive then hide some buttons after print it out.
Help extended will be highly appreciated.
Thanks
|
|
|
|
|
How can I load the images from the resource to the screen in fullscreen mode with autoresizing in addition I also wanna disable the PRTSCRN & ALT+PRTSCRN keys. How can I achieve this. I used the WM_KEYDOWN event but it isn't working for PRTSCRN & ALT+PRTSCRN. But When I all the buttons from my dialog box WM_KEYDOWN works for VK_UP & VK_LEFT but not VK_RIGHT & not even working for PRTSCRN & ALT+PRTSCRN.
Adeel Shamsi
adeelj@iname.com
|
|
|
|
|
>How can I load the images from the resource to the screen in
>fullscreen mode with autoresizing
The only way I know of is to (a) create a window whose client area fits the whole screen. This can be achieved by using
::GetSystemMetrics(SM_CXSCREEN) and
::GetSystemMetrics(SM_CYSCREEN),
and creating a CFrameWnd with no caption bar and non-resizing border.
To get the bitmap to full screen, you need to use StretchBlt() in place of BitBlt().
>in addition I also wanna disable the PRTSCRN & ALT+PRTSCRN keys. How >can I achieve this. I used the WM_KEYDOWN event but it isn't working >for PRTSCRN & ALT+PRTSCRN.
Any <alt> key combination generates WM_SYSKEYDOWN / UP.
WM_KEYDOWN or WM_KEYUP (not necessarily both) SHOULD work for PrintScreen (VK_SNAPSHOT is the key name). But try WM_SYSKEYDOWN / UP also.
>But When I all the buttons from my dialog box WM_KEYDOWN works for >VK_UP & VK_LEFT but not VK_RIGHT
Well, it should work the same for all arrow keys! But in a dialogue, there is some translation on keys to handle moving from control to control, swapping radio buttons in a group, etc. You should look at PreTranslateMessage() (in an MFC app - for a non-MFC app, I guess you need to get to the keypress before IsDialogMessage() is called), which is where the system does that translation. That should solve that bit of your problem.
As for the PrintScreen key, it is possible that it does not generate key messages to apps but instead is handled within the Kernel of Windows - in which case you are probably out of luck.
OK, I'll bite - WHY do you want to disable those keys? I hate it when apps try to disable keys and override the system. The system was designed for a reason, work with it! (You may have a very good reason, of course.)
|
|
|
|
|
I just able to diable the keys WM_SYSKEYDOWN/UP didn't work.
Below is the code for others
Disable the keys on app startup:
BOOL CTest1Dlg::OnInitDialog()
{
// My Code Start Here
m_nHotKeyID_1 = 100;
m_nHotKeyID_2 = 200;
BOOL m_isKeyRegistered_1 = RegisterHotKey(GetSafeHwnd(),
m_nHotKeyID_1,
MOD_ALT,
VK_SNAPSHOT );
BOOL m_isKeyRegistered_2 = RegisterHotKey(GetSafeHwnd(),
m_nHotKeyID_2,
NULL,
VK_SNAPSHOT );
ASSERT( ( m_isKeyRegistered_1 != FALSE ) ||
( m_isKeyRegistered_2 != FALSE ) );
// My Code End Here
}
Enabling the keys on app end:
void CTest1Dlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
// My Code Start Here
BOOL m_isKeyUnregistered_1 = UnregisterHotKey(GetSafeHwnd(),
m_nHotKeyID_1);
BOOL m_isKeyUnregistered_2 = UnregisterHotKey(GetSafeHwnd(),
m_nHotKeyID_2);
ASSERT( (m_isKeyUnregistered_1 != FALSE) ||
(m_isKeyUnregistered_2 != FALSE) );
// My Code End Here
}
Adeel Shamsi
adeelj@iname.com
|
|
|
|
|
Wow, I never knew about that function. Well done. I will keep that information for future reference. Sorry I couldn't help {:v(
|
|
|
|
|
is visual c++ 7 out yet, and is this different to visual c++ .net (or does it incorporate .net)?
and what is C#, is this version 7 or is it soemthing different altogether. I heard that MS are
moving to c# is this true? if so how different is it to c++, i heard c# was a mix btween visual
basic and c++ although the guy didnt really know what he was on about. Im just wondering as a
beginning programmer what should i use (as i am about to buy a copy of Visual Studio 6)...
also with the copy of visual studio im buying i dont get the msdn library (its a student edition),
thus is it possible/legal to copy the msdn CD. I figure because the informations publically
available on the net it might be free to distribute?? if im wrong then dont shout at me about this!
thanks in advance
|
|
|
|
|
Visual C++ 7 will be part of the Visual Studio.Net package or whatever they final decided to call it. As far as I'm aware Visual Studio.Net(VS7) will not be available until the beginning of next year.
Michael
|
|
|
|
|
My understanding (limited though it may be) is that Visual C++ 7 and Visual C++.NET are one and the same.
C# is Microsoft's new language that is specifically targetted at the .NET framework and is v. similar to Java. C# is another OO language and, like Java, has not wildly dissimilar to C++.
Microsoft are not moving to C#, it's very much a case of pick the language you want for the task in hand. VB, VC++, and C# all have different strengths and weaknesses nad are better at different tasks.
The tool you buy depends on your skillset. If you already know C++, then maybe Visual C++ is the best one to buy (from Microsoft's offering - they're not the only C++ langauge development tool vendor). Visual Studio includes Visual Basic, Visual C++, Visual Java and Visual FoxPro (does anyone use it;P ) and so if you have a number of these skills, then that is an even better option.
As for MSDN: I think the current licence agreement allows the MSDN Library to be installed on as many machines as you like within your organisation, outside of that the usual restrictions apply. As you rightly point out, all the information on the CDs is also available from the MSDN website.
Hope this helped. No doubt someone else will correct me in a few places
|
|
|
|