|
Hey... Got a question about detecting debug vs. release configurations. I am working with an app at work that gave me an assertion error the other day. It included the filename and the line number in the error message. This would mean that the EXE we got from the vendor was compiled with DEBUG flags on. (I'm sort of a newbie (6 months as a convert from VB6).)
My question is... is there any way to tell whether an exe or dll was compiled with Win32 Debug configuration without opening in a hex editor and looking for extra symbols? (I'm trying to see if I can automate the process for a software test team.)
Thanks!
Tojam
|
|
|
|
|
one thing i would do is that open the exe or the dll with dependency walker and find anything that depends on debug dlls like mfc42d.dll or mfc42ud.dll if it does then this binary was build in debug version.
|
|
|
|
|
Well if you want, you can search on the net for Windows PE file Specification, and according to it ".exe" file compiled with debug information will have ".debug" section. If you find this section, this means your ".exe" file has dubug information included.
Best Regards,
Bilal Anjum
|
|
|
|
|
Hi,
I have still two little questions.
I can restart, stop, pause the application by using the service control manager. Are there somehow some messages sent to the program so i can do some additional work . (for example, reboot a service which is minimised to the task bar .. two icons in the task bar) If you move with your cursor above it, one will disappear. But it is not nice to see two icons
Greetings,
Jens
|
|
|
|
|
執行這一行
HINSTANCE inst = AfxGetInstanceHandle();
會停在
MFC\Include\AFXWIN1.INL
_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
{ ASSERT(afxCurrentInstanceHandle != NULL);
return afxCurrentInstanceHandle; }
好像afxCurrentInstanceHandle是NULL的關係
這是因為什麼原因?
是我少Call什麼Function嗎?(win32 application project)
|
|
|
|
|
You are more likely to get an answer if you ask the question in English.
Lots of people here can read bad english. Not as many people can read chinese.
Try again!
Iain.
|
|
|
|
|
Hi,
Help me to change the account type of current user in Windows XP dynamically through my application. (ie. Normal user to Administrator or viceversa)
Provide me is there any demo projects to download...
Thanks in Advance
iRams
|
|
|
|
|
NetUserSetInfo function. There is a sample in MSDN for it.
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
Can anyone tell me why NetUserSetInfo gives an error when using the
structure USER_INFO_1005 . The error value is 87 and the value of the
last parameter of the function is 997.Any idea about it..
Here is the code, I need to change the current Login User with Normal Rights to Administrator rights.
char lpBuffer[255];
USER_INFO_1005 usriPriv;
DWORD netRet = 0;
usriPriv.usri1005_priv = USER_PRIV_ADMIN;
netRet = NetUserSetInfo( NULL, (unsigned short *)lpBuffer, 1005, (LPBYTE)&usriPriv,NULL);
if( netRet == NERR_Success )
printf("Success!\n");
else
printf("ERROR: %d Returned from NetUserSetInfo\n", netRet);
|
|
|
|
|
Hint: Error 87 = "The parameter is incorrect".
1. You aren't specifying a server, so this will assume that the lpBuffer is an account name on the local machine.
2. Is the executing account sufficiently privileged (see docs on NetUserSertInfo).
3. When you say the value of the last parameter is 997, have you tried testing it against values like USER_PRIV_INFOLEVEL or USER_PRIV_PARM?
(How do you know it's 997, you're passing in NULL, so it doesn't give you the value?)
Steve S
|
|
|
|
|
I've done some work with C# and one of the things I really like was the fact that I could have the same handler for many different controls on a form. For example if I had five buttons and an event handler called OnButtonClick I could setup every button to call that same handler. Is it possible to do something like this in MFC? If so how? I have a bunch of edit controls that all need to do the same processing after losing focus and I'd rather have one function for them all instead of having to have a bunch of handlers that do that exact same thing. Thanks in advance for the help.
I just thought of something...would this be as simple as adding a message map entry to map the edit boxes I want to use the function to that function?
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_EN_KILLFOCUS(IDE_BOX1, OnKillFocusEdit)
ON_EN_KILLFOCUS(IDE_BOX2, OnKillFocusEdit)
ON_EN_KILLFOCUS(IDE_BOX3, OnKillFocusEdit)
ON_EN_KILLFOCUS(IDE_BOX4, OnKillFocusEdit)
END_MESSAGE_MAP() Would that work? Just thought of something else. If that did work how would I know which edit box called the function?
Thanks
- monrobot13
|
|
|
|
|
Yeah, you can have one handler handle as many messages as you like. To get the HWND of the caller, you'll need to look at the LPARAM of the message, which for WM_COMMAND is the HWND of the control that sent the message: GetCurrentMessage()->lParam
--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ
----
Pinky, are you pondering what I'm pondering?
I think so Brain, but if we shaved our heads, we'd look like weasels!
|
|
|
|
|
Michael Dunn wrote:
which for WM_COMMAND is the HWND of the control that sent the message
Is this the same for WM_KILLFOCUS?
Thanks for the help
- monrobot13
|
|
|
|
|
In the message map definition use:
ON_CONTROL_RANGE(EN_KILLFOCUS, IDE_BOX1, IDE_BOX4, OnKillFocusEdit)
and declare the handler as:
OnKillFocusEdit(UINT nID)
This will reflect EN_KILLFOCUS notification message from all controls in range IDE_BOX1 - IDE_BOX4 and pass the appropriate ID to nID parameter.
Robert-Antonio
"A piece of paper is an ink-lined plane.
An inclined plane is slope up.
A slow pup is a lazy dog.
Q.E.D.: A piece of paper is a lazy dog."
|
|
|
|
|
This sounds like a good idea, but
Robert A. T. Káldy wrote:
and pass the appropriate ID to nID parameter
confuses me. If the functions is called internally and not specifically by me how do I pass in an ID or am I misunderstanding and is the ID passed in automatically?
Thanks for the help
- monrobot13
|
|
|
|
|
Use can use ON_CONTROL_RANGE as said earlier but you must be sure that the ranges of the controls given are contigious and in order.
What is meant by "pass the appropriate ID to nID parameter" is that when the method is called, the nID parameter will be the ID of the control that just lost focus.
(Note that if you are planning to do something like validate and keep the user on a certain control if validation fails, this is a bad GUI design decision.)
Peace!
-=- James (Sonork:100.21837)
[Tip for SUV winter driving survival: "Professional Driver on Closed Course" does not mean "your Dumb Ass on a Public Road"!] [Get Delete FXP Files Now!]
|
|
|
|
|
Thanks for the clarification James. Not to worry, I am planning on validating, but not keeping the uesr on the control. I've dealt with programs like that before and it drove me insane.
- monrobot13
|
|
|
|
|
the execute method doesn't supports concatination. Meaning
.Execute("Select * form table where ID ='" + val,NULL, -1);
|
|
|
|
|
So why not just create the string first and then call it for the function?
CString csQuery (_T ("Select * from table where ID = "));
csQuery += val;
AdoConnection.Execute(csQuery, NULL, -1);
- monrobot13
|
|
|
|
|
Ananymous wrote:
Execute("Select * form table where ID ='" + val,NULL, -1);
what is the variable type of val
try this.
CString strQuery;
strQuery.Format("Select * from table where ID = %?",val);
.Execute(strQuery,NULL,-1);
|
|
|
|
|
Whether or not the concatination works here has nothing to do with the Execute method. The Execute method is not involved in the concatination of "Select * from table where ID='" + val, it would be called with the result of the concatination as a parameter.
In what way does the concatination fail?
|
|
|
|
|
Hi
I have created a service out of a program using the program SRVANY.EXE.
When you click the minimise button of the program, an icon of the program is automatically added to the tray bar. When you double click the icon, the program is shown.
Now, when i minimise the program, which runs as interactive service with local system account .. it is added to the tray bar. When i log out and then log in, the icon is removed from the tray bar and i still can see the program (process) in my task manager so it still runs.
I thought my code removed the icon itself, so i checked that but the 'WM_DESTROY' isn't send by the system when you logout so my program doesn't remove it itself (Windows does).
Is there any way around this? And does anyone know which messages the service manager sends to the program to stop or reboot? I would highly appreciate any help.
Best regards,
Jens
|
|
|
|
|
I guess it is due to recreation of the tasktray and you are not notified and you are not putting ur icon back on the tasktray....
you should listen to the user defined message with message string "TaskbarCreated"
like this
const UINT WM_TASKBARCREATE = RegisterWindowMessage(_T("TaskbarCreated"));
when you get this message update the taskbar icon.
|
|
|
|
|
ah ok. I will try this right now.
Greetings,
Jens
|
|
|
|
|
Yes, now i get the Windows message that the tray bar is created and i add my icon to it. So that problem is solved Thanks alot!
However, i got one problem left. Every time when i run the service and log off and then i login a second time .. the program is shown correctly with an interface (interactive using local system account). But i can't use the menu .. it's somehow impossible to use the menu or do some actions with the program. How is this possible? (never had that problem until i used it as service)
<just edited="">
I only have this weird problem on my computer. On any other computer it works great.
Greetings,
Jens
|
|
|
|