|
|
Hi, i am using ShellExecute to open an image. The image is opened using Windows Picture and Fax Viewer. Now, I have a button, in my dialog(the UI). I want to close the Windows Picture and Fax Viewer, got any idea? here's my code... please help. its kinda urgent... been stuck on this for 3 days... googled it, but nopthing relevant came out.
void CDesignDlg::OnImage()
{
// TODO: Add your control notification handler code here
CFileDialog m_ldFile(TRUE);
{
if ( ! onStart )
{
m_button.SetWindowText("Start Image");
}
else
{
m_button.SetWindowText("Stop Image");
}
onStart ^= 1; // make onStart 0, or 1 respectively
}
if (onStart==0){
if (m_ldFile.DoModal() ==IDOK)
{
CString abc= m_ldFile.GetPathName();
SHELLEXECUTEINFO tiff;
tiff.cbSize = sizeof(SHELLEXECUTEINFO);
tiff.fMask = NULL;
tiff.hwnd = NULL;
tiff.lpVerb = "open";
tiff.lpFile = abc;
tiff.lpParameters= NULL;
tiff.nShow = SW_SHOWNORMAL;
tiff.hInstApp = NULL;
tiff.lpIDList = NULL;
tiff.lpClass = NULL;
tiff.hkeyClass = NULL;
tiff.dwHotKey = NULL;
tiff.hIcon = NULL;
tiff.hProcess = NULL;
tiff.lpDirectory = NULL;
int ReturnCode = ::ShellExecuteEx(&tiff);
UpdateData(TRUE);
}}
else
{
//what should be put here???
}
}
|
|
|
|
|
I think killing the process might do the trick. To do this you need the process ID. One of the ways to obtain it is:
int ReturnCode = ::ShellExecuteEx(&tiff);
DWORD pid = GetProcessID(tiff.hProcess);
....
To kill the process call:
KillProcess( pid );
Let me know if this did the trick 
|
|
|
|
|
NOPE... IT DOESNT... i get the following errors
c:\documents and settings\user\my documents\visual studio 2005\projects\design\designdlg.cpp(242) : error C2065: 'GetProcessID' : undeclared identifier
c:\documents and settings\user\my documents\visual studio 2005\projects\design\designdlg.cpp(245) : error C2065: 'KillProcess' : undeclared identifier
maybe you like to see the results... http://yfrog.com/11picture2mzjpx[^]
stop does go back to start when i click it, but picture doesnt close
|
|
|
|
|
Do you have the proper include's? Try:
#include Windows.h
or
#include Winbase.h
Also as CPallini suggests below, you can try sending a WM_CLOSE to the window... Yo get the handle from the ShellExecuteEx method (in tiff.hwnd)
|
|
|
|
|
WM_CLOSE to window.. for example? I tried, but keep getting different error, went to the library of SHELLEXECUTE, all said is optional for hwnd... so i cannot get any example... yup. i do have the proper includes...
|
|
|
|
|
Foret the hwnd - I was wrong anyway Getting back to GetProcessID:
Try reading about the function in MSDN - all the info is there.
If your includes are ok maybe you're missing a lib?
Did you link to Kernel32.dll?
Select your project propertied, go to Linker -> Input -> Additional Dependencies
And type in Kernel32.dll.
|
|
|
|
|
yup i know about the site... I am using Visual C++6 there is no additional dependencies there... i try puting it in object modules, but an error came out saying cannot open Kernel32.dll
|
|
|
|
|
tolw wrote: If your includes are ok maybe you're missing a lib?
Are you kidding? AFAIK "undeclared identifier" error has nothing to do with the linker.
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]
|
|
|
|
|
hmm... alright... i trying to call hWnd as a handle... and trying other methods... so once i get something, i let u guys know... but, if you guys got any idea, let me know too.. thanks...
|
|
|
|
|
|
whoops - right you are - sorry about that - juggling between CP and my own projects can do that to you 
|
|
|
|
|
You should send the WM_CLOSE message to the Windows Picture and Fax Viewer main window.
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]
|
|
|
|
|
Hi,
I need to refresh the desktop after hiding the elements on desktop.
I am hiding the desktop content but failed to refesh desktop.
if i do right click refresh or simple F5 refresh is happening but how to do this programatically.
Thanks,
----------------------------
KRISHNA KUMAR T M
|
|
|
|
|
Did you try UpdateWindow on the desktop window handle.
Take desktop window handle using GetDesktopWindow
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
I found this code in one of the forums here:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
Be sure to include "shlobj.h"
this is this.
|
|
|
|
|
HI ,
How to check whether a string does not contain any data other that 'A' - 'Z' or '0' - '9'
is there any API available
|
|
|
|
|
You could use CString::SpanExcluding if you're using MFC.
Otherwise use the strcspn function.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
pandit84 wrote: How to check whether a string does not contain any data other that 'A' - 'Z' or '0' - '9'
You can use _istalnum , _isalnum function...
bool IsValidAlNumStr( LPCTSTR lpctszStr )
{
while( *lpctszStr )
{
if( !_istalnum(*lpctszStr ))
return false;
++lpctszStr;
}
return true;
}
|
|
|
|
|
Hi,
How can i retrive console's code page information from a c++ application.
I need the similar information as we got from "chcp" command.
Thanks in advance.
birajendu
CyberG India
Delhi
India
|
|
|
|
|
The active code page can be retrieved using GetACP() function.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
Thanks,
still i have some problem.
When i run the application on a japanese XP/Vista the GetACP() gave me 932 whichi is correct.
Than i changed the code page to 437 thru MOD CON CODEPAGE SELECT=437 command. after this command also GetACP() function returns 932 in both XP and Vista machines. Yes i am running the application in same console in which i have changed the code page.. Can you please suggest whre i am doing wrong..?
birajendu
CyberG India
Delhi
India
|
|
|
|
|
|
Following CLI resurns me a correct argc as 5 (1 name of exe and 4 parameters)
-targetpath "C:\tmp" -targetserver vm-w23-btk02\sql2k5
but if i add \ after tmp , argc is 3
-targetpath "C:\tmp\" -targetserver vm-w23-btk02\sql2k5
so main function ignores all the parameters after "C:\tmp\" and return always 3
but if i put a escape character as "C:\tmp\\" then argc is correct as 5
but since these command is entered by user on command prompt , it is not advisable to ask user to put escape character at the end so what is a soluation to get correct number of count.
Why \ at then end of c:\tmp ignores rest of the parameters ?
Without putting a escape character as "C:\tmp\\" , How can i get correct argc ?
Also if i removed double quotes , then its returns correct argc , Only if a path include quotes and ends with \ then argc is incorrect.
int cMyclass::Main(int argc, char **argv)
{
return 0
}
-Thanks
Sandeep
modified on Monday, June 1, 2009 2:20 AM
|
|
|
|
|
Are you giving that in code?
Try and print the contents of argv in the main function.
You would get a better understanding of the situation.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|