|
Start the command directly but use pipes to redirect it's output. See this[^] article for details.
As for telling when the program is done use the process HANDLE returned in the LPPROCESS_INFORMATION structure passed to CreateProcess . A process HANDLE can be passed to one of wait functions such as WaitForSingleObject because it becomes signalled when the process has finished executing. Also note that a common mistake made by people is not to close the process and thread HANDLE s when they're done with them (or not at all).
Use GetExitCodeProcess to retrieve the return code.Steve
|
|
|
|
|
Ok sorry for being dumb but I have been staring at this for a couple of days now and I am getting nowhere.
My dialog has a menu with a couple of controls, the main one being a CTreeCtrl.
I have captured the OnCancel() to prevent accidental closure but I notice that the 'Enter'/CR key causes the app to close and I have no idea why? It triggers an orderly close bypassing the OnCancel().
I know I have missed something but I just cannot see what.
Any pointers?
Many thanks
Alan
|
|
|
|
|
Please ignore this.
Just figured out that I did not have a handler in place for the OnOK. Thus the default behaviour was being called which closes the app.
Doh!
Sorry for wasting your time guys.
Alan
|
|
|
|
|
Hi,
I have two classes, MainDlg.cpp, and Game.cpp . My MainDlg.cpp file is responsible for TCP communication, and it works fine on its own. I initially start MainDlg.cpp and then I start the Game.cpp class from there. Iam trying to call the DoSend() (on MainDlg.cpp) method from the Game.cpp file and it just results in a SOCKET_ERROR !
Just for experimentaion I've tried to call a method on MainDlg.cpp from Game.cpp to display a simple MessageBox and it works, so the problem is not with the class object I created.
This is how I created/call the Game.cpp object on MainDlg.cpp
Game* game = new Game;
game->Create(Game::IDD);
When the Game.cpp dialog comes up, this is how I execute the method on MainDlg.cpp:
CMainDlg* Main = new CMainDlg;
Main->GetResults();
In MainDlg.cpp :
GetResults method: <-- Works fine when run locally
void CMainDlg::GetResults()
{
Message_PDU Message;
Message.iMessageNumber = 80;
DoSend(Message);
}
DoSend Method: <-- Works fine when run locally
void CMainDlg::DoSend(Message_PDU Message)
{
int iBytesSent;
iBytesSent = send(m_iSocket, (char *) &Message, sizeof(Message_PDU), 0);
if(SOCKET_ERROR == iBytesSent)
{
MessageBox("Failed to send","Client");
}
}
Any help will be really appreciated!
|
|
|
|
|
Did your applications performed correctly the preliminary steps (i.e. there's an established connection between client and server?)?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Yes, the connection is started and is running. On the server side I have a small counter that counts the active connections, and before/after I start the Game.cpp dialog it remains connected... =/
|
|
|
|
|
OK just for experimentation I tried to do a simple SetWindowText from the secondary class, and it resulted in a Debug Assertion error, when I debugged I got this:
void CWnd::SetWindowText(LPCTSTR lpszString)
{
ENSURE(this);
ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}
I think this problem has nothing to do with the sockets and has something to do with permissions?
Sorry I am new to C++
|
|
|
|
|
The problem is that when you do this:
CMainDlg* Main = new CMainDlg;Main->GetResults(); in your Game dialog, this creates a NEW INSTANCE of the main dialog - not the already existing one. This new one has not even done initialization of it's windows.
What you need to do is to make
CMainDlg* Main; a member variable in your Game dialog, and then change the way you create the game dialog in the main dialog to:
Game* game = new Game;
game->Main = this;
game->Create(Game::IDD); Now you'll find that Main (the member variable in your Game dialog actually points to the existing Main dialog.
Hope that helps.Karl - WK5M
PP-ASEL-IA (N43CS)
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|
|
it worked!
Karl YOU ARE A STAR!
Thank you so much!
|
|
|
|
|
Suppose there are multiple windows application opens. now I want to know the class and caption of all the open windows application . Trioum
|
|
|
|
|
|
But How Can I get the class and Caption programmatically Trioum
|
|
|
|
|
For each iterated window
you could use the GetClassName(..) and GetWindowText(..) functions virtual void BeHappy() = 0;
|
|
|
|
|
Have you tried EnumWindows() ?"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
loop for FindWindowEx, there is very good example of same in MSDN! "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Hi all,
i have a DLL that is created by VB,
now i want to use this in my VC++ dialog based mfc application.
please tell me how can i do this.
thanks in advance.
|
|
|
|
|
|
Le@rner wrote: i have a DLL that is created by VB,
now i want to use this in my VC++ dialog based mfc application.
if the DLL is created in VB6, then it must be exposing COM Classes, which can be easily included and programmed in VC++.
use #import compiler directive to import the dll in your program, Wizard it self generates classes based on exposed classes by VB com dll. "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
first verify your dll is COM component or simple DLL. You can verify by dependency viewer.
|
|
|
|
|
Hi all,
I am working on visual studio 2008 (VC++). i am making a dialog based application.
My problem is i have a vb dll and its lib file...
how can i use its function in my program...
Can anybody please help me in this.
thanks in advance
|
|
|
|
|
If you are working VC++ Native code then you need regular dll.
otherwise you can not load DLL in VC++ which was make another program like
|
|
|
|
|
download Dependency Walker tool and use it to determine what dll's your app is looking for.
|
|
|
|
|
Hi im trying to return char with the function but it gives error, anhy help
struct random_class {
char *crypto_buf;
void __thiscall classfunction (void *pParam);
};
random_class* pParam;
void (__thiscall* classfunction)(void *pParam );
void __thiscall myclassfunction(void *pParam )
{
classfunction(pParam->crypto_buf);
}
error C2227: left of '->crypto_buf' must point to class/struct/union/generic type
1> type is 'void *'
|
|
|
|
|
nah1337 wrote: void __thiscall myclassfunction(void *pParam )
Why did you make pParam a pointer to a void ?txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
Why do you need to use explicitely __thiscall ?If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|