|
I'm writing a software application which I intend to sell and I'm implementing a number of security features for licensing purpose.
I was wondering if there is a way to identify a Windows OS installation. Example is it possible to get Windows Serials?
|
|
|
|
|
|
your thought is not realism ,because maybe many people use the same SN of windows ,i think you can get some hardware information to deal with that ,such as net card physics address
a beginner
|
|
|
|
|
enhzflap was just replying to another user asking how to get window's serial number.
I agree with your criticism, but you should point it at the original poster (JackWack).
Iain.
|
|
|
|
|
Hi
I wanna know how to change all of controls of a MFC exe, like skin programs(SkinCrafter for example)
I have wrote some function to subclass all of a controls of a dialog, it enumarates all child windows and subclass all buttons for example, I created a class derived from CDialog, and call that function on it OnInitDialog() method, and I derive all my dialog's class from this one, so all of it's buttons will be replaced, this works great for me, but want to know how these skin programs can change all of controls of an exe file, a piece of code or a good guidline will help me much
Please answer if you know something about this
Thank you all
www.logicsims.ir
|
|
|
|
|
|
Hi,
I'm having problems converting some compiled code in VC++ 6.0 under my new Studio 2005 environment.
VC++6.0:
<br />
ON_MESSAGE( MY_MESSAGE, OnUmMyMessage)
the .H declaration for above...
<br />
afx_msg void OnUmMyMessage(EGS_CONSTATE conState, CMyMsg *msg);<br />
<br />
typedef enum { STATE1, STATE2, STATE3, } EGS_CONSTATE;<br />
<br />
class CMyMsg : public CMyOtherClass<br />
{<br />
public:<br />
char data[MAX_MSG_SIZE];<br />
};
The compiler error I get is:
error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMyVisDlg::* )(EGS_CONSTATE,CMyMsg *)' to 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)'
How can I make my arguments or message map look like a (WPARAM,LPARAM) ?
Thanks!
|
|
|
|
|
What about a cast?
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I tried casting inside the message map function as:
<br />
<br />
ON_MESSAGE( (WPARAM) MY_MESSAGE, (LPARAM) OnUmMyMessage)<br />
<br />
but that only gave me errors
|
|
|
|
|
You made the casts in the wrong places, change
afx_msg void OnUmMyMessage(EGS_CONSTATE conState, CMyMsg *msg);
to
afx_msg void OnUmMyMessage(WPARAM wConState, LPARAM lMsg);
and then, in the function definition
afx_msg void OnUmMyMessage(WPARAM wConState, LPARAM lMsg)
{
EGS_CONSTATE conState = (EGS_CONSTATE) wConState;
CMyMsg * msg = (CMyMsg *) lMsg;
}
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Cool beans!
both of the suggestions listed here worked for me.
Thanks for the help,
Johnny
|
|
|
|
|
You are welcome.
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.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
more insight,
there may be compiler settings that are not allowing this. In other projects that i've worked with, there is no problem with what appears above (in 6.0 or Studio 2005).
|
|
|
|
|
The prototype changed between VC6 and VS2005
ON_MESSAGE( WM_MYMESSAGE, OnMyMessage )<br />
LRESULT CMyWnd::OnMyMessage( WPARAM wParam, LPARAM lParam ) <br />
|
|
|
|
|
In addition to the other comments, I happen to think this is a GOOD change. I've had to fly from India to Northern Ireland to fix a bug I made my using the wrong prototype for a message handler. The casts in the MFC macros hid my mistake during compilation, and it took me ages to track down the stack corruption.
I took the hint as was paranoid from then on - but anything a compiler can do to stop me making dumb mistakes and fine by me.
Iain.
|
|
|
|
|
COOL
Never Change My Goal!
|
|
|
|
|
Hmm, so how do I make that mistake? Haven't been to Ireland yet.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
I saw you've solved this, but just for the record:
The fact that message handlers for messages sent to windows returns an LRESULT is not new or changed in any way since VC6, this has always been the case. Have a look at MSDN[^].
The difference between VS2005 and VC6 is that in the later version you'll get a compiler error whereas the older version simply ignores it, which will put the developer in trouble later on.
Just like Iain I made this infamous error many years ago which corrupted my stack as well.
My point is that if you encounter other MFC applications with user defined message handlers mapped with ON_MESSAGE or ON_REGISTERED_MESSAGE that does not return an LRESULT , correct it immediately and save you a lot of future trouble.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hi,
I am using the Browse For Folder dialog to allow selection of an existing folder or the creation of new folder. When the user clicks the Make New Folder button the tree allows the creation of the folder but doesn't return the folder name so that it can be shown in the status text control.
How can I detect the closing of the edit control and get the new folder path?
Thanks
|
|
|
|
|
What about the lpfn member (of the BROWSEINFO structure)?
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
I know how to use the lpfn function pointer, but I am not sure what you are suggesting. I am setting that pointer to my callback function, but it is not being called when the user is doneediting the folder name.
|
|
|
|
|
Royce Fickling wrote: I am setting that pointer to my callback function, but it is not being called...
Is it being called for anything? I would have thought a TVN_ENDLABELEDIT notification would be sent.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
No, it is being called with the BFFM_INITIALIZED and BFFM_SELCHANGED messages and nothing else. I thought maybe I needed to set another flag, but I don't know what it might be.
|
|
|
|
|
I do not see any other ones here that look promising.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
Good day, i'm having a proplem with a static library i'm creating. But before i'll go into the details of the library i'm gonna give you some details about the app that is importing it.
But basicly this is a raw exe. All standard libraries such as the default C Runtime Libraries are not included. Which means i have to declare my own entrypoint for the application which looks like this.
#pragma comment(lib, "SkyNet_RTL.lib")
#include <windows.h>
#include "SkyNetLoader.h"
#include "..\SkyNet_RTL\SkyNet_RTL.h"
void __stdcall __SkyNetLoaderEntry()
{
_SkyNet_RTL_INIT();
int entry_ret = 1;
ExitProcess(entry_ret);
}
</windows.h>
The only libraries that link with the application is kernel32.dll and ntdll.dll which actually link to all applications.
Don't know if it matters but that standard calling convention for the exe is __stdcall and __cdecl for the static library.
The function _SkyNet_RTL_INIT(); is a function implemented in the static library called SkyNet_RTL.dir (Skynet Runtime library). As you see i've included the SkyNet_RTL.lib in the pragma comment directive so it should be linked into the build.
The header file for the static lib IS the same file for both the application and the static library.
The Compiler puts the .lib file and the export file into the folder containing the .exe so it should be present for the linker to grab.
The static lib project is a dependency for the application so if there are any changes to the lib it's rebuilt and put into the application project's folder for linking before the application itself is built.
Here's the header file for the static library
#ifndef __SKYNET_RUNTIME_LIBRARY_V01
#define __SKYNET_RUNTIME_LIBRARY_V01
bool __cdecl _SkyNet_RTL_INIT(void);
#endif
Plain and simple. _SkyNet_RTL_INIT(void) is implemented in SkyNet_RTL.cpp like this
#include "SkyNet_RTL.h"
bool __cdecl _SkyNet_RTL_INIT(void)
{
return true;
}
The static library is also a completely raw library, which excludes all standard libraries for linking (CRT, etc). But right now the symbols dont seem to be exported. I've messed around with the settings alot and i constantly get.
SkyNet Loader error LNK2019: unresolved external symbol "bool __cdecl _SkyNet_RTL_INIT(void)" (?_SkyNet_RTL_INIT@@YA_NXZ) referenced in function "void __stdcall __SkyNetLoaderEntry(void)" (?__SkyNetLoaderEntry@@YGXXZ)
Atm i dont see anything wrong, i've gone trough quick articles on static libraries and none seem to do anything other then what i'm doing here excluding the fact that my lib and app are completely raw (my compiler/linker settings have been modified alot, no RunTime checks, etc).
The lib and export files are present for the application to be linked with.
If someone can point me in the right direction it would be greatly appreciated, and btw if you are wondering why the explicit __cdecl in the library function it was because i thought perhaps the calling conventions could change something, it was originally made __stdcall by the compiler even though the standard calling convention for this build is __cdecl.
|
|
|
|