|
I want to see in the TaskInfo2003 somthing more informative, than "thread", when i CreateThread().
And when i create in ms vs2002 mfc application, it`s name represented like "TODO: <file description="">"
|
|
|
|
|
I use the following function to set the name of each thread. Call it at the beginning of your thread function:
void SetThreadName(LPCSTR name)
{
struct {
DWORD dwType;
LPCSTR szName;
DWORD dwThreadID;
DWORD dwFlags;
} thread_name_info;
thread_name_info.dwType = 0x1000;
thread_name_info.szName = name;
thread_name_info.dwThreadID = (DWORD)-1;
thread_name_info.dwFlags = 0;
__try {
RaiseException(0x406D1388,0,
(sizeof(thread_name_info)/sizeof(DWORD)),
(const ULONG_PTR *)&thread_name_info);
}
__except (EXCEPTION_CONTINUE_EXECUTION) {
}
} Note that this works with the Visual Studio debugger. I don't know if it will work with your application ("TaskInfo2003").
Software Zen: delete this;
|
|
|
|
|
Thank you, but it`s really works ONLY with the Visual Studio debugger, not with the process managers
|
|
|
|
|
Hi,
I want to save a bitmap in a file. My funcion is the following code, but this save the a inverted bitmap.
BOOL CDXCaptureDlg::SaveBMP(BYTE *Buffer, int width, int height, long paddedsize, char *bmpfile)<br />
{<br />
BITMAPFILEHEADER bmfh;<br />
BITMAPINFOHEADER info;<br />
<br />
memset ( &bmfh, 0, sizeof (BITMAPFILEHEADER ) );<br />
memset ( &info, 0, sizeof (BITMAPINFOHEADER ) );<br />
<br />
bmfh.bfType = 0x4d42;
bmfh.bfReserved1 = 0;<br />
bmfh.bfReserved2 = 0;<br />
bmfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + paddedsize;<br />
bmfh.bfOffBits = 0x36;
<br />
<br />
info.biSize = sizeof(BITMAPINFOHEADER);<br />
info.biWidth = width;<br />
info.biHeight = height;<br />
info.biPlanes = 1;
info.biBitCount = 24;
info.biCompression = BI_RGB;<br />
info.biSizeImage = 0;
info.biXPelsPerMeter = 0x0ec4;
info.biYPelsPerMeter = 0x0ec4;<br />
info.biClrUsed = 0;
info.biClrImportant = 0;
<br />
<br />
HANDLE file = CreateFile ( bmpfile , GENERIC_WRITE, FILE_SHARE_READ,<br />
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );<br />
<br />
if ( file == NULL )<br />
{<br />
CloseHandle ( file );<br />
return FALSE;<br />
}<br />
<br />
unsigned long bwritten;<br />
if ( WriteFile ( file, &bmfh, sizeof ( BITMAPFILEHEADER ), &bwritten, NULL ) == FALSE )<br />
{<br />
CloseHandle ( file );<br />
return FALSE;<br />
}<br />
<br />
if ( WriteFile ( file, &info, sizeof ( BITMAPINFOHEADER ), &bwritten, NULL ) == FALSE )<br />
{<br />
CloseHandle ( file );<br />
return FALSE;<br />
}<br />
<br />
if ( WriteFile ( file, Buffer, paddedsize, &bwritten, NULL ) == FALSE )<br />
{<br />
CloseHandle ( file );<br />
return FALSE;<br />
}<br />
<br />
CloseHandle ( file );<br />
<br />
return TRUE;<br />
}<br />
Ivan Cachicatari Blog[^]
www.latindevelopers.com
|
|
|
|
|
Ivan Cachicatari wrote: inverted bitmap
It means color inversion, image transposition (like matrix) or other ?
Have a nice code day
|
|
|
|
|
Do you mean it's upside-down?
That's the way the BMP format works, the first row in the data is the bottom line, and so on up to the top.
--
Help me! I'm turning into a grapefruit!
Buzzwords!
|
|
|
|
|
Windows understands normal (upside down) bitmaps as well as "right-way-up" bitmaps - check the MSDN documentation on bitmap headers. As far as I remember, "right-way-up" bitmaps have negative height, so in your posted code, try changing:
info.biHeight = height;
to
info.biHeight = -height;
I use this technique with a StretchDIBits call, and it works there.
Since you are not processing the bitmap data at all, whether this technique works will depend on the application you use to display the bitmap. A "well-behaved" application (conforming to MSDN bitmap standards) will display correctly. A "badly behaved" application will display the bitmap upside down or crash.
Some applications may accept it, some may not! But it's easy to try.
|
|
|
|
|
Hello every one,
Please let me explain my problem neatly.
I am using DLL (without MFC/ATL/WTL)with shared memory and I declared shared memory using
#pragma data_seg(".shared")
directive.
As I am using DLL only for system wide hook, only my application uses it. But my applicaton can be terminated and restatred again (by user). I observed using taskmanager and debugger with step executation when my program calls SetWindowsHookEx(), 8KB memory get used by my application(process). But while termination this 8KB memory doesn't get released. This makes me two problem.
1) If I want to update/change my DLL file by terminating application Windows doesn't allow it. (As my development is going on,I have to do it). Only way to wait for some time or Log off/restart.
2) If my application get restarted 15 times a day, shall application aquire 120KB memory?
How I can release this shared memory? Or reuse last unreleased next time.
How to solve this problem?
First deserve then desire. Let be deserved first.
|
|
|
|
|
When your aplication is closed, YOU MUST UNHOOK THE SYSTEM HOOK ALWAYS!
A system hook takes a lot of system resources, and is to long to explain here why, so unhook it using UnhookWindowsHookEx
Also, in you aplication create a button to hook/unhook your hook, that way you would be able to change the hook dll witout restarting.
Also, you must use a semaphore to check that only one instance of your aplication is running.
System hook's are a bit complicated at the beginning, I suggest you to check the theory in a lot of good articles in here.
Doing this, you shouldn't have more memory or performance leaks.
Good luck
|
|
|
|
|
Thanks for your reply.
Unfortunately it is not useful as I am using UnhookWindowsHookEx already while exiting.
Time of unreleasing DLL from memory get extended if I rerun application after terminating first instance.
Can you mention any links regarding using semaphore.
Thanks a lot.
Shivaji Patil
First deserve then desire. Let be deserve first.
|
|
|
|
|
Quoted:
" If I want to update/change my DLL file by terminating application Windows doesn't allow it. (As my development is going on,I have to do it). Only way to wait for some time or Log off/restart."
Your Unhook process isn't working fine, your hook DLL is still running when you close your application, that's why you never free those 8K.
Try closing all the hooked applications, after your unhook and check if the memory is back.
ABout the semaphore...
// Just one instance
hMutexOneInstance = CreateMutex(NULL, TRUE, "Your program ID");
if (GetLastError() == ERROR_ALREADY_EXISTS)
OnCancel();
if (hMutexOneInstance)
CloseHandle(hMutexOneInstance);
Paste that on your oninitdialog, and that's all.
"Your program ID" is any string you want to use.
Good luck
|
|
|
|
|
Thanks for reply.
Let me check.
First deserve then desire. Let be deserved first.
|
|
|
|
|
Thanks for response,
I solved my problem but by another way. I am sharing with you here.
First of all I released all set hooks.
Then I enumerate all processes for their IDs.
Then I opened each Process and list modules loaded with it.
I compared module's name with my dll name.
For matched Process (each) enumrated windows and child window.
For each window and child window I get ProcessId and compared with earlier ProcessId (EnumWindow caller Process).
For matched window and child window I send message which I hooked for my purpose using window handle.
This releases my DLL from every process which aquired it in its own memory map.
I can check List of such processes by Tlist command of Windows by using -m option.
To use such technique we have to consider its side effect also.
Thanks once again.
First deserve then desire. Let be deserved first.
-- modified at 0:52 Thursday 16th February, 2006
|
|
|
|
|
By default on our XP cleints the indexing service for folders is turned off, I want to set a folder and its files to have the indexing turned on, SetFileAttributes would seem to be the way of doing this but there does not seem to be a constant to do this, so what is the reverse of FILE_ATTRIBUTE_NOT_CONTENT_INDEXED ? Or anybody know how to do it in Window Script ? I've had a good search and cannot find anything, any help, as ever, will be much appreciated.
|
|
|
|
|
This should do the trick:
<br />
BOOL ToggleFileAttribute(LPSTR lpstrFileName,DWORD dwToggleAttribute)<br />
{<br />
DWORD dwFileAttributes = GetFileAttributes(lpstrFileName);<br />
DWORD newdwFileAttributes = dwFileAttributes & ~dwToggleAttribute;<br />
return SetFileAttribute(lpstrFileName,newdwFileAttributes );<br />
}<br />
<br />
<br />
if (ToggleFileAttribute("c:\\foo.dat",FILE_ATTRIBUTE_NOT_CONTENT_INDEXED))<br />
{<br />
}<br />
else<br />
{<br />
}<br />
<br />
If you want to do this on all the files in a folder and its subfolders, you'll need to write a function that can recursively traverse and toggle the FILE_ATTRIBUTE_NOT_CONTENT_INDEXED bit on each file.
-- modified at 8:42 Friday 3rd February, 2006
|
|
|
|
|
Thanks very much that will do nicely.
|
|
|
|
|
Don't forget to check the return value of GetFileAttributes() . If that fails and you don't check, SetFileAttributes() will munge the attributes, which is Bad.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
"That probably would've sounded more commanding if I wasn't wearing my yummy sushi pajamas."
-- Buffy
|
|
|
|
|
hi!!
where can i get information about "blackberry" apart from blackberry.com? thanks! -V.G
|
|
|
|
|
|
hi,
i have developed a dialog based appliation, it has a button "help" in it, it launches or shows the help when it is pressed, Besides that i would like to add the feature which launches the help when F1 is pressed.
how can i do that? any Sample code?
can anyone help me in this regard,
thanks in advance,
paul
|
|
|
|
|
y r not u using Accelarator?
God is real unless declared int..
|
|
|
|
|
Aryan S wrote: y r not u using Accelarator?
i think you're suggestion is pertinent.
however, why don't you speak an english that every one understand (i mean, well written) ?
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
i think he just came out of writting a long sms.
-Prakash
|
|
|
|
|
My application needs allocate disk space to some of it's directories.
For example: directory "Client1" with 2 mb and directory "Client2" with 3 mb
My application should be able to write data of (2+3) 5 mb to those
directories.
But with or *without* writing any data, The Windows should feel those
directories have taken that much space. Or when other applications check the
free disk space, Windows must show 5 mb less in the actual
space. IS any functions are there to partiton the hard disk and also to lock the folder
Please help me
-- modified at 7:00 Friday 3rd February, 2006
|
|
|
|
|
Well just fill a file with zeros ::- ).
-= E C H Y S T T A S =-
The Greater Mind Balance
|
|
|
|