|
You first need to reserve space in the EXE for this, and be able to locate it code-wise, either by offset or by special signature bytes (I presume you have already done this).
I do not believe that you can modify the EXE file while it is mapped into memory (i.e. running). You should have read-only access to the EXE file, so your executable can make a copy of itself and launch that copy passing it a special command line parameter (which means run, do not copy yourself ) so that it does the real launching. I think you can then mark that copy-of-yourself with the Delete On Close flag, so that it cleans itself up when it exits. The process would work like this:
1: When launched, check for the run, do not copy yourself parameter
2a: If found, the application runs normally
2b: If not found, copy yourself (the EXE file) to a temporary location
3: Launch the temporary copy passing the run, do not copy yourself parameter
4: Flag the temporary copy for delete-on-close (lookup the FILE_FLAG_DELETE_ON_CLOSE flag)
5: Exit
Once you do this, your application's copy can modify the original EXE on disk, and whatever you change will have an effect the next time it is started.
This is also a way to handle automatic updates without a satellite or worker/helper application handling the replacing of files that are in use.
Be sure to give the temporary copy a meaningful filename, and document it, so that users do not worry when they see an unknown executable filename in Task Manager.
Peace!
-=- James Please rate this message - let me know if I helped or not!<HR> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
So you want to modify the file while it's being used? I don't believe this is possible.
Steve
|
|
|
|
|
Hi Experts,
I want to display html in htmlview.Please tell how to use CHtmlview or give any related link.
|
|
|
|
|
|
Thanx,Actually I tried with it using OnNavigateComplete2().But I am getting Null when I call "IDispatch * pDisp = GetHtmlDocument();".
I also included <afxhtml.h> file.What is wrong with it.
|
|
|
|
|
Actually I want to make a desktop application like webshot desktop application. Can anyone give me a link or code for such a kind of application.
please help me out.
Thanks In advance
Dhiraj
Dhiraj Kumar Saini
|
|
|
|
|
What is the need of ClassFactory ?
I mean The interface pointer can be obtained by using CoCreateInstance, then why to use CoGetClassObject.
|
|
|
|
|
CocreateInstance in used to obtain only single Object of the class. Whilei CoGetClassObject is used to obtain the multiple Object of the same Class.
And CocreateInstance automatically call the ClassFactory(). you don't have to care for it.
|
|
|
|
|
Firstly, as already mentioned, CoCreateInstance uses the IClassFactory interface to create the object. Secondly, IClassFactory has other methods besides CreateInstance . Finally, the class factory is allowed to implement other interfaces.
Steve
|
|
|
|
|
I have a mfc application,based on CDialog,developed with vc6.0. Now I have make its *.chm help file. But when I press F1, it will always shows "Cannot find the ... *.HLP file". How can I change F1's default help file's name?
Thanks in advance!
Peter
|
|
|
|
|
Override the WinHelp of App class (using ClassWizard)
- NS -
|
|
|
|
|
CWinApp has a member LPCTSTR m_pszHelpFilePath that is initialized before InitInstance() is called using a _tcsdup(), so you could free() the current m_pszHelpFilePath and _tcsdup() your own path in your InitInstance(). NOTE: during termination MFC will call free() on m_pszHelpFilePath assuming that it has been allocated using _tcsdup() so DO NOT set it to a static string.
-- modified at 3:30 Monday 17th September, 2007
If you are using VC6 then you will also need to override WinHelp either in theApp or in the mainFrame.
If you are using VC7 and above then forget the suggestion above and just call EnableHtmlHelp() in your WinApp constructor.
|
|
|
|
|
I am trying to build a CArray of structures. I need to define new TYPE using template.
I am lost in template syntax.
I got this so far
template <typename T>
struct Structure
{
CString word;
int frequency;
int weight;
int Category;
};
Can someone please help me with the rest of it? I am totally lost.
I need
CArray<MyType,MyType&> array;
Thanks for your help.
Vaclav
-- modified at 22:29 Monday 17th September, 2007
|
|
|
|
|
FYI
This compiles - hope it will also work
struct my_struct
{
int a,b,c;
CString s;
};
CArray<my_struct,my_struct> ca;
I just want to know why is the MS documentation leads me to belive I need to use template?
|
|
|
|
|
I does not work.
The ca "array" is an array of CString and I have no clue how to access the struct members.
|
|
|
|
|
Vaclav_Sal wrote: I does not work.
In fact your code was perfectly correct and that's the wey to do it (and you don't need to specify the second template argument because it has a default value). There are some articles here[^] about the STL, you'll probably find some usefull information.
|
|
|
|
|
Please note that in every program that wants to use the CFrame class in the Win32++ file will NOT be able to do so. there is a error as listed below.
In every example that has a call to the CFrame class (in Win32++) there is an error. Here's what my compiler says (VS 6.0):
c:\programming\codeproject api\demos\generic_all\win32++\frame.cpp(479) : error C2065: 'TB_GETSTRING' : undeclared identifier
In the CFrame cpp file (Frame.cpp) the error occurs in line 479 in the function "LRESULT CToolbar::OnCustomDraw(NMHDR* pNMHDR)" atg the line 479, ie:
BOOL HasText = (SendMessage(m_hWnd, TB_GETSTRING, (WPARAM) MAKEWPARAM (0,0), NULL) != -1);
Please advise me if you have a fix for this as soon as possible.
If anyone knows of the fix please email me directly at:
larryamillssr@hughes.net
A C++ programming language novice, but striving to learn
|
|
|
|
|
|
Hello,
I write differend data for then times with the same lengt to a file. I'm using one TEdit for this. Now I want to read the 4e data from this file and display it on a TEdit. How can I read data someware in the middle of a file.
Jelle.
|
|
|
|
|
What on earth is a TEdit ? What do you mean by 4E, is that the byte position ? An ifstream should do this just fine, I'd have thought.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Christian Graus wrote: What on earth is a TEdit ?
I think it's Borland's version of CEdit .
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Can you tell me what is TEdit for read a file you can use of CFile class.
|
|
|
|
|
hey folks,
i stumbled across an assertion in my program. When I want to show a dialog modally the dialog is shown correctly, but when I close the dialog I get an assert:
"Debug assertion failed! ... program ...wincore.cpp line 882" which is:
void CWnd::AssertValid() const
{
if (m_hWnd == NULL)
return;
ASSERT(HWND_TOP == NULL);
if (m_hWnd == HWND_BOTTOM)
ASSERT(this == &CWnd::wndBottom);
else if (m_hWnd == HWND_TOPMOST)
ASSERT(this == &CWnd::wndTopMost);
else if (m_hWnd == HWND_NOTOPMOST)
ASSERT(this == &CWnd::wndNoTopMost);
else
{
ASSERT(::IsWindow(m_hWnd));
My code is farely simple:
CSelectionDlg dlg;
dlg.DoModal();
the thing is: I call this from a member-class:
-MyDialogDlg my dialog
-SomeClass m_instanceOfClass; a memberclass of dialog.
a function of Someclass does the above code
I found some stuff from microsoft:
http://support.microsoft.com/kb/194300/eng
which didn't work for my case!
if I add
ASSERT(::IsWindow(m_hWnd)); before the domodal nothing changes... so somehow my handle gets lost and I donnu what to do. can anybody help? maybe a simple link. i tried many links, although nothing worked for my case. I don't have any crazy stuff in my OnInit of the dialog nor do I have another dialog as model dialog
thx for your help
zqueezy
|
|
|
|
|
Did you try to trace your code line to line it seems you have a unvalid hwnd on your code.
|
|
|
|
|
well, as I said, the handle is valid before the DoModal-call! but somehow not during it
|
|
|
|