|
I'm having diffculty to understand what you're looking for, and I suspect for google it's the same.
Let's start with specifiying more clearly what you want to do:
- what is a typical usecase for the program that you want to solve?
- what are the conditions under which the program is used?
- who uses the program?
- who writes the program (other than you)?
And more to the point:
- what do you mean by global event?
- what do you mean by 'start' and 'document' and 'it'
I do have some ideas what you're talking about, but it would be easier to offer meaningful advice when there's less guessing involved.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
Thanks for your answer!
I'm looking to build a demo to use to the global event.
I want to write a program (MainApp) that manages two other programs (SubApp1 and SubApp2). When I run MainApp, then MainApp will start subapp1 and subapp2.
|
|
|
|
|
1. You still haven't told us what you mean by global event
2. You're talking about processes and threads. Typically when you start an application on your computer, this starts a process with a single thread, the main thread. You can choose to leave it at that, in which case your program will just sequentially process it's task. Or your process can create new threads controlled by it, which will potentially run in parallel. You can also start a new process from the first one, but then your initital process will have no direct control over it; it can only talk to it via interprocess communication protocols.
In that latter case, communication might be implemented by sending Windows Events to the other process. I'm sure there are many other ways, but I'm not up to date with modern approaches in this field, nor do I have any relevant experience.
So, when you talk a 'mainapp' and 'subapp's, do you mean a process and it's threads, or do you mean to spawn separate processes - in which case the term 'subapp' would be very misleading?
P.S.: I only now spotted your answers below - looks like I was on the wrong path all along. As CPallini said, you'd better ask at the Kentico forums. And as they're using C#, the question is if you really want to go the extra mile of trying this in C++ ...
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
Thank you very much for your support!
|
|
|
|
|
What event your are talking about?
Event Objects[^], for instance, as far as I know, are not globals.
|
|
|
|
|
|
You should have mentioned you were using Kentico12. Probably you need to ask the question here: Questions & Answers[^].
In any case it looks .NET stuff, not C++ .
|
|
|
|
|
|
|
I took a quick glance at the Kentico site. Now I know this is about designing web pages - another bit of information you could have shared from the start.
One thing however is important to know: on it's main page[^] Kentico states (under "Disadvantages") that itQuote: Requires knowledge of ASP.NET MVC and programming. This doesn't sound like a beginner's tool to me. If you don't already know ASP.NET, this will be a stony path...
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
I am trying to open any kind of file using
ShellExecute(NULL, _T("open"), sPath + _T("\\") + sText, NULL, NULL, SW_SHOWNORMAL);
and is working well, but there a little issue: when I am trying to open an image file, I get always the "How do you want to open this file" dialog, everytime … why ? Of course, when I am trying to open this kind of image file from y windows explorer, is open with my default program, Windows Photo Viewer.
Is there any kind of parameters to put on ShellExecute ? Please note that I use this for ever kind of file, including exe files.
|
|
|
|
|
Go to Windows Explorer, right click on one of the files with that type, and check its properties.
|
|
|
|
|
I check it, there is no any problem, it is open properly in windows explorer … not in my app, using ShellExecute …
|
|
|
|
|
Have you checked that the details in the properties for open refer to the absolute path to your application? What is the return value from ShellExecute when you run the code? What are the values of sPath and sText ?
|
|
|
|
|
|
I have tried:
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
HINSTANCE hInstance = ShellExecute(AfxGetMainWnd()->GetSafeHwnd(), NULL, sPath + _T("\\") + sText, NULL, NULL, SW_SHOWNORMAL);
if (reinterpret_cast<int>(hInstance) <= 32) ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETMESSAGESTRING, 0, (LPARAM)(LPCTSTR)GetDocument()->FormatHinstance(hInstance));
}
the same result ...
|
|
|
|
|
The documentation states that you should use:
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
But I do not now if that will make a difference. The only way forward is to use the debugger and check exactly what happens at each point. You could also try setting the operation to "open", rather than NULL.
|
|
|
|
|
I have tried this:
HRESULT hr = E_FAIL;
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
HINSTANCE hInstance = ShellExecute(AfxGetMainWnd()->GetSafeHwnd(), NULL, sPath + _T("\\") + sText, NULL, NULL, SW_SHOWNORMAL);
if (reinterpret_cast<int>(hInstance) <= 32) ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETMESSAGESTRING, 0, (LPARAM)(LPCTSTR)GetDocument()->FormatHinstance(hInstance));
}
CoUninitialize();
same behavior … that "How do you want to open this file" is still present when I try to start an image file ...
|
|
|
|
|
Sorry, I am out of ideas. But that message suggests that there is no default application registered for the file type.
|
|
|
|
|
I really appreciate your post ! Kindly thank you !
|
|
|
|
|
|
_Flaviu wrote: Is there any kind of parameters to put on ShellExecute ? Try NULL instead of "open";
The default verb is used, if available. If not, the "open" verb is used. If neither verb is available, the system uses the first verb listed in the registry.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I have tried in this way, the same behavior, but I noticed that this issue is present on some PC, but not on the other … strange ...
modified 6-Jun-19 7:34am.
|
|
|
|
|
_Flaviu wrote: I am trying to open an image file
Just to clarify that statement....
The method you uses does the following.
1. Determine the type of file using the extension.
2. Look up what application the OS (windows) has recorded to open that type of file.
3. Open the file using the application.
However if 1 fails, in that the file type is not known (already specified) then it will ask you for what to open it with.
If you want to explicitly specify some application to open the file with then you need a different method.
If you want to preclude the message in the first place then you will need to write code that first detects if the type is known. However that can still be problematic because if there is a known application for type, and then the application is uninstalled (or otherwise not available) there is no assurance that the type will have been unregistered. So it might still fail to open it.
|
|
|
|
|
The strange thing is that this behaviour is present on some PC, and on some PC are not present... and I noticed this behaviour even on Outlook application, on some image attachments ... so, guess is PC issue, not application issue.
|
|
|
|
|