|
SoftDeveloper wrote: I have one small exe file.
And I want to use one function of that exe file in my program.
Is it possible to call the function in my program?
It's not possible to directly call a function in another EXE from your EXE.
How is it you even know the small EXE has a function you need?
Mark
|
|
|
|
|
Some people eh!
Crying out for help, making it sound like it's the end of the world, and don't even thank you for it.
|
|
|
|
|
WalderMort wrote: Crying out for help, making it sound like it's the end of the world...
Yeah Had it been in all caps I would have responded MUCH quicker!
|
|
|
|
|
WalderMort wrote: don't even thank you for it
Yep.
If you try to write that in English, I might be able to understand more than a fraction of it. - Guffa
|
|
|
|
|
SoftDeveloper wrote: Is it possible to call the function in my program?
The answer is, it depends. If the function is exported from the executable, you may be able to call LoadLibrary() for the executable and then GetProcAddress(). Additionally, you may have to know what the calling convention is for the function, in order to invoke it correctly.
Chris Meech
I am Canadian. [heard in a local bar]
I agree with you that my argument is useless. [Red Stateler]
Hey, I am part of a special bread, we are called smart people [Captain See Sharp]
The zen of the soapbox is hard to attain...[Jörgen Sigvardsson]
I wish I could remember what it was like to only have a short term memory.[David Kentley]
|
|
|
|
|
Chris Meech wrote: ...you may be able to call LoadLibrary() for the executable and then GetProcAddress()...
Really? I thought you could only get at the resources that way.
Hopefully the function doesn't use anything that requires initialization, like MFC
|
|
|
|
|
You can, but I never tried myself. Take a look here[^]
|
|
|
|
|
I stand corrected
I still would worry (at least) about run-time initialization if the function uses the CRT, MFC,
etc. I exercise my right to choose not to do it
Cheers!
|
|
|
|
|
Mark Salsbery wrote: I still would worry
I agree, it's not something that should normally be done. After all, what the hell are DLL's there for?
Another way I know of is to build a type library for the exe and add the export into it, again though, what's the point?
|
|
|
|
|
Chris Meech wrote: If the function is exported from the executable
Sure?
How can you do that?
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,
Commenting on the Almagest, by Ptolemy.
|
|
|
|
|
How to use large cursor as in PhotoShop?
As I know, cursor size is maximum to 32x32 pixels.
Pens in PhotoShop use very large cursors, how to do that?
|
|
|
|
|
Don't use a cursor, instead use a bitmap and draw it to the cursors location.
|
|
|
|
|
|
Take a look at this[^]. I used depends.exe and it seems that all they do is draw transparent bitmaps.
|
|
|
|
|
I have this line of code :
TargetList.push_back(CSTREAMS(*(SrcList[i])));
where CSTREAMS is a userdefined class and TargetList is a vector . So i'm just calling the constructor without the new keyword. I think this creates a temporary object, wich is copied by the vector and then destroeyd, so no memoryleak. Is this correct ?
|
|
|
|
|
|
Hi all,
I've written an MFC MDI application where I need an additional child frame to show other aspects of my data. So I derived a class from CMDIChildWnd and created the Icon, Accelerator and Menu. My view for this child frame is derived from CFormView and has a chart control an a button control.
I call/create the child frame by choosing a menu entry as follows:
<br />
void CmyApp::OnAnsichtnewView()<br />
{<br />
CMainFrame *pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);<br />
pFrame->CreateNewChild(RUNTIME_CLASS(CmyChildFrm), IDR_myTYPE);<br />
<br />
CRect cr;<br />
pFrame->GetActiveFrame()->GetClientRect(cr);<br />
<br />
CDocument *pDoc = pFrame->GetActiveDocument();<br />
CRuntimeClass *pRTC = RUNTIME_CLASS(CmyFromView);<br />
CCreateContext context;<br />
context.m_pCurrentDoc = pDoc;<br />
context.m_pNewViewClass = pRTC;<br />
context.m_pLastView = NULL;<br />
<br />
pFrame->GetActiveFrame()->CreateView(&context);<br />
}<br />
In my view class I've overwritten the OnSize method as follows:
<br />
void CmyFormView::OnSize(UINT nType, int cx, int cy)<br />
{<br />
CFormView::OnSize(nType, cx, cy);<br />
<br />
if(m_Chart.GetSafeHwnd() != NULL)<br />
{<br />
m_Chart.MoveWindow(0, 0, cx-30, cy);<br />
AfxMessageBox("Chart resized");<br />
}<br />
if(m_Button.GetSafeHwnd())<br />
{<br />
m_Button.MoveWindow(cx-30, 0, 30, 30);<br />
AfxMessageBox("Button resized");<br />
}<br />
AfxMessageBox("Form resized");<br />
}<br />
When I run my programm and do a resize on my new child, I only get a "Form resized" MessageBox. So, obviously m_Chart and m_Button don't get a Hwnd but I don't know why.
Can anybody give me a hint on this?
Thanks,
Frank.
|
|
|
|
|
|
It seems your m_Button and m_Chart variables were not associated with child controls. Did you create your child controls with Create member, like m_Button.Create(. . .) , or in a different way?
Maybe you should show us more details.
|
|
|
|
|
I used the dialog editor to create the controls. The chart control is an ActiveX control and the button is actually a checkbox control, which behaves like a button. In this editor I also assigned the member variables by a right click on the control and let the framework do the job. So the framework also created the DataExchange
void CmyFormView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TCHART_Chart, m_Chart);
DDX_Control(pDX, IDC_CHECK_Button, m_Button);
}
I created also another child frame in the same way but assigned it to a DocTemplate so that it starts when the programm start. Here I don't have resizing problems. So maybe I did something wrong in my OnAnsichtnewView part when the user creates the child frame. Maybe I have to pass a handle?
Thanks,
Frank.
-- modified at 7:32 Saturday 25th November, 2006
|
|
|
|
|
Hi,
I have taken an ATL component and imported MSADO15.DLL to include ADO functionality
#import "C:\\Program Files\\Common Files\\System\\ADO\\MSADO15.DLL" rename_namespace("ADOCust") rename("EOF","EndOfFile")
using namespace ADOCust;
I referred to the following link.
http://www.codeproject.com/atl/atl_ado.asp?df=100&forumid=1749&fr=51[^]
The problem Iam facing is when I try to check EndOfFile attribute for the recordset pointer using
VARIANT vartemp;
vartemp.vt = VT_BOOL;
vartemp.boolVal = FALSE;
vartemp.boolVal = pRecordset->EndOfFile;// not getting the value as TRUE even if the recordset pointer is at the end
Is there any problem with renaming EOF to EndOfFile in import statement??
I have all other functionalities working well.
Any suggestions would be helpful.
Thanks
-- modified at 7:45 Friday 24th November, 2006
Today is a gift, that's why it is called the present.
|
|
|
|
|
Hi,
Can someone please tell me how to export a CDialog based class from a MFC extention DLL. I saw tutorials showing how to do that. they work when i build them as they are told to. In the tutorial i found it exports a diffrent class and in that class the dialog box is shown. but it doesn't work in my case.
some one tell me how to export the CDialog class itself with the resource..
|
|
|
|
|
The easiest and safest way is to follow the MFC guidelines - Extension DLLs[^]
The most important things are the initialization of the DLL (AfxInitExtensionModule), the
declaration of your classes (adding AFX_EXT_CLASS), and using the global defines in the app and
DLL projects (_AFXDLL defined in the app, _AFXEXT defined in the DLL).
Mark
|
|
|
|
|
Hi, I am using WH_KEYBOARD_LL global hook to detect keystrokes in any window. Is there any way to get handle of a window that is related to key stroke or handle of the window in which I am writing? Thanks in advance.
|
|
|
|
|
I think you can call HWND GetActiveWindow(VOID) inside your HOOK PROC, but I NEVER made a test about it.
|
|
|
|