Get current file name inside Class

Back to topics list To post a new topic, please log in or register
avatar
6
DutchKevv 2016.01.10 13:45
 

Hi there,

 

To prevent some boilerplate code, I want to read the file name, of the file a class is executing in..  

There is no default MQ4 function available, but it should be possible with a native windows function (GetModuleFileName kernel32.dll)

Source - https://msdn.microsoft.com/nl-nl/library/windows/desktop/ms683197(v=vs.85).aspx 

 I did read about #import the Kernel32.dll, and steal some functions from there, but it doesn't seem to work..

 

#import "kernel32.dll"
   int  GetModuleFileName();
#import

 

It gives me the following error ->

2015.01.05 00:15  Cannot find 'GetModuleFileName' in 'kernel32.dll'

It explains itself, the getModuleFileName is not in kernel32.dll

Does anyone know how to get the current file name??

 

Thanks! 

 

avatar
1110
Ovo 2016.01.10 17:17 #
 

Well, regarding the proper import, the information is in the link you published.

GetModuleFileNameW (Unicode) and GetModuleFileNameA (ANSI)

 and

DWORD WINAPI GetModuleFileName(
  _In_opt_ HMODULE hModule,
  _Out_    LPTSTR  lpFilename,
  _In_     DWORD   nSize 

);

The proper syntax for import would be

int GetModuleFileNameW(int zero,str& lpFilename,int nSize);

This command would very likely return "terminal.exe" module.

If you expect the current script name, you should use MQLInfoString(MQL_PROGRAM_NAME)

Back to topics list  

To add comments, please log in or register