|
I should have spotted this in my first reply. CDC::SelectObject (CBitmap *) returns a pointer
to a temporary CBitmap. To quote:
This function may return a pointer to a temporary object. This temporary object is only valid
during the processing of one Windows message. For more information, see CGdiObject::FromHandle
After a while, the CBitmap pointed to by bmpOld is deleted by MFC; so when you try to delete it,
an exception is raised. This is one of the reasons I use HANDLES...
You could change your class to
<br />
class CTestDC : public CDC<br />
{<br />
....<br />
CBitmap bmpOld;<br />
....<br />
<br />
CTestDC (....)<br />
{<br />
....<br />
bmpOld.Attach (SelectObject (&bmpNew)->Detach ());<br />
....<br />
}<br />
<br />
~CTestDC ()<br />
{<br />
SelectObject (&bmpOld);<br />
bmpOld.Detach ();
}<br />
}<br />
I hope this helps.
Iain.
|
|
|
|
|
I'm trying to resize of metafile. Is there a function I can use.
Thanks
|
|
|
|
|
Hi
I've got a real strange problem. I want to simulate a button-press in another app. I have a HWND wndButton , which is definately valid. Now I want to simulate the pressing of the button:
::SendMessage(::GetParent(wndButton),WM_COMMAND,MAKEWORD(::GetDlgCtrlID(wndButton),BN_CLICKED),(LPARAM)wndButton);
But this doesn't work. Does anybody know why? It works in other programs
Update: The window doesn't even react on ShowWindow(SW_HIDE) , although my HWND to the window is valid. What the hell is going on here?
regards
Greg
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Are you sure about "(::GetParent(wndButton),"? Parent might not be what you expect. Could you check it with Spy?
|
|
|
|
|
Oh, forget my question, thanks for your effords
This code was inside a loop that never was reached
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Gregor S. wrote:
This code was inside a loop that never was reached
I don't like having to debug code but situations like this proves it's a complete necessity.
Regards,
Brian Dela
|
|
|
|
|
|
It is defiantly possible, procexp.exe(sysinternals.com) does that. Check out sysinternals.com they should have some source code for that.
|
|
|
|
|
|
Nishant S wrote:
Unfortunately they dont give out the source code for that one
Then it's probably impossible using Win32, forcing use of either (DDK documented) NT API, or (more likely, since this could be something useful) it's completely undocumented.
Perhaps you could disassemble the sysinternals code and see how its done? I've got a feeling this is in the NT API QueryObjectInformation (or something like that).
|
|
|
|
|
|
|
Nishant S wrote:
QueryObjectInformation doesnt exist
Well, I did tell you "or something like that".
Fortunately, trusty header files displays e.g ZwQueryObject and ZwQuerySecurityObject. Perhaps the source code for regmon and/or filemon could include something useful also.
But maybe this is simpler than we might think. Have you had a look at GetNamedSecurityInfo & co?
|
|
|
|
|
I just searched google groups, and there seems to be much information. Perhaps even the one your searching for
Take a look at this link
regards
Greg
modified 12-Sep-18 21:01pm.
|
|
|
|
|
|
if u have platform SDK..you could use..
GetNamedSecurityInfo
There are no failures; there are only extended learning opportunities.
|
|
|
|
|
|
thanks to Gregor I found it here
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&threadm=Pine.HPP.3.96L.990109145728.21674C-100000%40tw900.eng.cam.ac.uk&rnum=5&prev=/groups%3Fq%3DOwner%2B%252Bof%2B%252Ba%2Bprocess%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3DPine.HPP.3.96L.990109145728.21674C-100000%2540tw900.eng.cam.ac.uk%26rnum%3D5
|
|
|
|
|
|
I think OpenProcessToken / GetTokenInformation will do the trick.
|
|
|
|
|
|
It should work - do you query for TokenUser ?
|
|
|
|
|
solon wrote:
It should work - do you query for TokenUser ?
Yup I do :-
DWORD pid = GetCurrentProcessId();
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
HANDLE hToken;
BOOL b = OpenProcessToken( hProcess,TOKEN_ALL_ACCESS, &hToken );
DWORD siz;
b = GetTokenInformation(hToken, TokenOwner , NULL,
NULL , &siz);
PTOKEN_OWNER tokown = (PTOKEN_OWNER) GlobalAlloc(GPTR,siz);
b = GetTokenInformation(hToken, TokenOwner , &tokown,
siz , &siz);
char accname[30];
char DomainName [256];
DWORD cbName = 30;
DWORD cbDomainName = 256;
SID_NAME_USE nUse;
b = LookupAccountSid("\\\\Trivandrum",tokown,accname,&cbName,
DomainName, &cbDomainName,&nUse);
if(b)
MessageBox(0,"suc","",0);
else
{
char buf[512];
sprintf(buf,"%d",GetLastError());
MessageBox(0,buf,"",0);
}
GlobalFree(tokown);
Spot anything wrong?
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
In the GetTokenInformation call you should pass directly tokown ( the third parameter is a TOKEN_OWNER*, not TOKEN_OWNER** - you are corrupting the stack by passing &tokown ). TOKEN_OWNER is a struct, and the SID is the Owner member - use tokown->Owner in the LookupAccountSid call.
|
|
|
|
|
hey, can anyone point me to any good interface tutorials that make apps like winapp possible, and that explain the lower-level details of whys and hows.... Im pretty sure I could hack something together but im sure i wouldnt know the most efficient way of doing this, and id like to know.
id like more knowledge on making my own custom looking windows, and more graphical control than i currently have.
I have alot of experience with file I/o , sockets / internet apps, data manipulation, but not as much in the way of GUI's except the MFC provided abstractions that are available, and i want more abilities than just the standard looking dialogs , SDI's , and MDI's. i can do all the common controls , just dont know enough windows API to get that kind of control to get the custom looking windows...
i have sort of a brain block on the whole gui thing im trying to overcome , so id appreciate the tips / resources anybody can provide.
|
|
|
|