Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Equivalent of SYS(16)
Message
General information
Forum:
Visual FoxPro
Category:
Windows API functions
Miscellaneous
Thread ID:
00090128
Message ID:
00090417
Views:
25
>>>>Hi,
>>>>
>>>>I'm writing a small "splash screen" app using Borland C++ Builder.
>>>>
>>>>It works quite well, but I'd like to defend the exe against a user installing my exe in another directory and trying to run it.
>>>>
>>>>What I'd like a a procedure in C++ or the Windows API which returns the same information which I get with SYS(16) in Visual FoxPro, so that I can ascertain the location of the exe which is running (the splash screen) and thus find the location of my Visual FoxPro exe (which will be in the same directory).
>>>>
>>>>Using the current directory won't necessarily work, as the user could run my exe from a Windows NT command prompt
>>>>
>>>>i.e. C:\myappdir\myapp.exe.
>>>>
>>>>Best
>>>>
>>>>Matt.
>>>
>>>Hi Matt:
>>>
>>> GetModuleFileName will give you the exact path of exe.
>>>
>>> DWORD GetModuleFileName(
>>> HMODULE hModule, // handle to module to find filename for
>>> LPTSTR lpFilename, // pointer to buffer for module path
>>> DWORD nSize // size of buffer, in characters
>>> );
>>>
>>> You can use it in the splash screen exe and look for the VFP app in tha directory.
>>>
>>>HTH
>>
>>Raul,
>>
>>I overlooked this one. Here's how to get the module and the filename:
>>
>>DECLARE INTEGER GetModuleFileName IN Win32API;
>>  INTEGER hModule, STRING @lpFilename, INTEGER nSize
>>DECLARE INTEGER GetClassLong IN Win32API;
>>  INTEGER hWnd, INTEGER nIndex
>>* Get the main window handle from FOXTOOLS
>>lnhWnd = MainhWnd()
>>* Get the module handle
>>lnmodule = GetClassLong(lnhWnd, -16)
>>* Initialize the parameters
>>lcfilename = SPACE(265)
>>lnsize = LEN(lcfilename)
>>* Get the filename
>>lnsize = GetModuleFileName(lnmodule, @lcfilename, lnsize)
>>If lnsize is less than or equal to 1, the function failed. Otherwise, it represents the number of characters in the buffer.
>>

>>hth,
>
>George,
>FoxTools not available in Borland C++ - I just tried it and mainhwnd() is nowhere to be found. Although your solution is correct, this thread should be in Visual Studio (C++) forum. I have exactly the same problem as Matt here so I am following the thread with great interest. Sorry Bill old pal, but Borland also seem to have a good C++ package!

Nigel,

My example was intended to be run under VFP, not C++. In that environment, you would use other functions (such as FindWindow()) to retrieve the window handle.
George

Ubi caritas et amor, deus ibi est
Previous
Reply
Map
View

Click here to load this message in the networking platform