|
I am writing a COM dll that uses job objects to control certain procsses. I am having trouble with getting my job object to behave in the way I want, and there is a profound lack of documentation on this subject so I am reaching out to the outer world for help. I am new to this forum, but I was immediately impressed by the knowledge that I have found here at CP. If any of you saving developers have worked with job objects or are familier with the querky inner workings of them, I would be grateful for your response.
The main problem that I am having is getting my job object to terminate at the right point, and not to terminate when I don't want it to. If any of you savvy developers have worked with job objects or are familier with the querky inner workings of them, I would be grateful for your response. Please post or email me if you are interested and I can explain in greater detail and give source code to go along with it. TIA
If at first you don't succeed, Post....
|
|
|
|
|
Haven't used it, but Jeff Richter covers it in Programming Applications for Microsoft Windows[^].
Previous editions of this book were called Advanced Windows, but the chapter on jobs is new to the fourth edition (being new to Windows 2000).
|
|
|
|
|
Thanks mike...Ill check it out...If anyone else knows where I can find any other documentation on this subject let me know....
|
|
|
|
|
I am writing a COM dll in ATL.
But if i write "double bound[2][2]" in IDL, in c#, the parameter is "double[] bound". Maybe user will be puzzled by refer to 1 dimension array.
How can i express the function interface as strict as possible?
Thanks!!
|
|
|
|
|
I'm using some custom buttons which use bitmaps for their appearance. These buttons are all stored as MFC Bitmap project resources in the default 16 colors. They are placed in the program using CBitmapButton::LoadBitmaps and CMenu::SetMenuItemBitmaps (for different purposes).
They seem to work just fine but, if the user is using desktop settings which select a different color for "3D Objects" so that windows appear in a color other than the default grey, the custom buttons still have a gray background although my custom toolbars change to match the user color.
How can I get my custom bitmaps to adapt to the user's desktop colors?
|
|
|
|
|
Instead of CBitmap::LoadBitmap() , use LoadImage() with the LR_LOADTRANSPARENT and LR_LOADMAP3DCOLORS flags.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Do you mean CBitmap::LoadMappedBitmap()? That code seem to work. Thank you!
But what can I use for CBitmapButton::LoadBitmaps() to achieve the same effect? It doesn't seem to have an equivalent parallel.
|
|
|
|
|
I don't still master CALLBACK function,
such as its working theory and coding rule and so on
Can somebody tell me?
Thank you in advance!
|
|
|
|
|
As far as I know there's nothing much different in syntax.
just use the CALLBACK specifier.
The difference come in the code that's inside the function.
A callback is called from some outside source (usually windows itself) on the occurence of some event. Callback functions are 're-entrant'. So if that event occurs twice while your function is still processing windows will still call the function for execution (instead of waiting the first call to finish it's job).
This means that you have to make sure that your callback routine can handle such a situation.
Setting / resetting values of variables can cause a lot of confusion here.
"It was when I found out I could make mistakes that I knew I was on to something."
-Ornette Coleman
|
|
|
|
|
Thank you again
It will cost much time to solve this problem if one error happens here.
|
|
|
|
|
Actually I've never read any formal documentation on CALLBACK function, don't even know if there's anything good around.
I just tried using the different callbacks with the WINAPI enum functions... and making mistakes!
"It was when I found out I could make mistakes that I knew I was on to something."
-Ornette Coleman
|
|
|
|
|
|
|
I trying to create an MFC app which is capable of opening and creating multiple types of documents. I have two document templates created in the main app class using the CMultiDocTemplate class. Everything appears to work, except when I try to open a document (Rich Text in this case) that was saved (which is supported by the app) the document appears to be empty. Any ideas as to what might need to be done to make this work? Thanks.
neacetp
|
|
|
|
|
Come ON, someone out there must know this...
How can you send a char that's not on the keyboard using SendInput?
To type '¯', for example, you hold alt and type 0175 on the num pad.
So I guessed this, but it doesn't work
int i;
INPUT input[10];
ZeroMemory(input, sizeof(input));
for (i = 0; i < 10; i++)
input[i].type = INPUT_KEYBOARD;
input[0].ki.wVk = 18;
input[1].ki.wVk = input[2].ki.wVk = 0x60;
input[3].ki.wVk = input[4].ki.wVk = 0x61;
input[5].ki.wVk = input[6].ki.wVk = 0x67;
input[7].ki.wVk = input[8].ki.wVk = 0x65;
input[9].ki.wVk = 18;
input[2].ki.dwFlags = input[4].ki.dwFlags = input[6].ki.dwFlags =
input[8].ki.dwFlags = input[9].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(10, input, sizeof(INPUT));
using a keyboard logger, i can see that it does exactly what I want, ie press alt, type 0175, release alt, but it doesn't send '¯' to the active app
Any ideas?
Any method to simulate the typing of ¯ to the active app will be fine - not necessarily SendInput(), that's just what i have used do far.
thanks in advance
=====
Phlip
Always proofread carefully to see if you any words out
|
|
|
|
|
Friendly advice: Yelling at the board will not increase the chances of getting a response.
Partial response: Use VK_MENU for the Alt key.
--Mike--
Ericahist | Homepage | RightClick-Encrypt | 1ClickPicGrabber
Latest art~!@#2rDFA#@(#*%$Rfa39f3fqwf--=
NO CARRIER
|
|
|
|
|
Michael Dunn wrote:
Friendly advice: Yelling at the board will not increase the chances of getting a response.
but it will increase it's chance of getting seen - this forum's so popular that in 1 day a post drifts back to the third page - it's quite likely that a lot of regulars who might know the answer to my problem never saw the post because it had disappeared before they got here.
=====
Phlip
Always proofread carefully to see if you any words out
|
|
|
|
|
Did you try WM_CHAR already or it didn't work? Just like: ::SendMessage(hwnd, WM_CHAR, (WPARAM)175, (LPARAM)0); or something like that...
|
|
|
|
|
it didn't work, but I've had an idea...
it would probably work if i sent the WM_CHAR to the text box rather than the window
is it possible to get the hwnd of the control with the focus on a different window? There's probably an API call for it, but what is it?
I don't know the control ID or anything like that - i'm sending to a 3rd-party chat app
=====
Phlip
Always proofread carefully to see if you any words out
|
|
|
|
|
::ChildWindowFromPoint
put your mouse cursor over the child window, collect the x,y, then get the handle with that API.
HWND = ((CWnd*)ChildWindowFromPoint( POINT point ))->m_hWnd;
I hope it works out for you.
|
|
|
|
|
weird...
that works with notepad, but not with the chat program i'm writing this for.
besides, i don't want to have to hold the mouse cursor over the input box whenever I want to send something.
surely there's an API call to get the active child?
=====
Phlip
Always proofread carefully to see if you any words out
|
|
|
|
|
Receiving a message is one thing, and displaying contents in an editbox is another. Not every thing is displayable, probably your receiver-window is not able to display that kind of characters----notepad can maybe, but that doesn't mean your editbox can too.
But of course you need to first make sure that your receiver-window really has received the aforementioned message(WM_CHAR), so override its PreTranslateMessage and see...
|
|
|
|
|
it's able to display it when i type it in (via alt+numpad)
i'm sending the message to an IRC client - i don't exactly want to crack it and override its PreTranslateMessate.
I'm giving up on writing this in C. I'm porting the whole thing to VB - it's SendKeys function does wnat I want.
The only reason I didn't write it in VB to begin with is because i couldn't get EnumWindows to work properly, but i've figured it out now.
Thanks anyway for your suggestions.
=====
Phlip
Always proofread carefully to see if you any words out
|
|
|
|
|
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, lParam As Long) As Long
Function EnumChildProc(ByVal hwnd As Long, lParam As Long) As Long
' DO SOMETHING WITH HWND HERE
End Function
Call EnumChildWindows(parentWnd, AddressOf EnumChildProc, 1)
Phlip,
I hope this VB code sample I typed will help you. It hurts to write this, but you could do the exact same thing in VC++, as a matter of fact doing it in VB is a bizzare abstraction of the real C++ API.
Saying you have to port it to visual basic doesn't make much sense to me although I'm sure you have your reasons.
|
|
|
|
|
What I'm trying to make is an automatic typer thingy for chat programs - just click a button and it types a bunch of stuff for you.
I could write the typing bit easily in VB - there's a function called "SendKeys" which does exactly that. But I didn't know of the AddressOf operator at that stage, so I though I'd have to use C++ to use EnumWindows because you have to pass a function pointer to it.
I then figured out how to use SendInput and made a function that turned a string into an array of INPUTs that would type that string (complete with things like '{' -> {SHIFT DOWN}'['{SHIFT UP}) but I ran into trouble if i wanted to include characters that weren't directly typable on the keyboard.
But now I've learned the AddressOf operator in VB so I have no problems programming it there.
If I know how to do it in VB, but don't in C, why bother trying to do it in C?
I would have preferred to do it in C, for obvious reasons (VB is, well, VB after all, for crissake), but the right tool for the right project and all that...
=====
Phlip
Always proofread carefully to see if you any words out
|
|
|
|