Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to minimize window and set low priority through API?
Message
General information
Forum:
Visual FoxPro
Category:
Windows API functions
Miscellaneous
Thread ID:
00527416
Message ID:
00527622
Views:
51
Hi Larry,

I tried it and OpenThread function returns 0.
In that post you are referring to (message#496824 ) you used OpenProcess function:
lnhproc = OpenProcess(PROCESS_TERMINATE,0,lnprocID)
That one returns the value, but using that value does not change the priority with SetThreadPriority() function.
Do I need any other steps?


>Hi Nick,
>The syntax is correct but the parameter is not. < s >
>
>You need to pass in a handle to the thread not the thread ID. Use the OpenThread function and pass in the thread ID retreived by GetWindowThreadProcessID.
>#define THREAD_SET_INFORMATION  0x20
>declare integer OpenThread in kernel32 integer lnaccess, integer lninherit, integer inthreadID
>
>local lnhthread
>lnhthread = OpenThread(THREAD_SET_INFORMATION,0,lnprocID)
>I haven't tested this so I'm not sure if it works. However the technique is the same is what I posted concerning killing a process a few of months ago.
>
>HTH.
>
>>Thanks Larry,
>>
>>Could you tell me if I got the syntax right? I have no errors, but it does not seem to set the priority.
>>
>>* THISFORM.nSHWND contains the window handle of FP DOS window
>>
>>local lnprocID
>>lnprocID = 1
>>DECLARE INTEGER GetWindowThreadProcessId IN user32 INTEGER, INTEGER@
>>GetWindowThreadProcessId(THISFORM.nSHWND, @lnprocID)
>>thisform.set_low_priority(lnprocID)
>>
>>*** set_low_priority() form method
>>LPARAMETER tnProcess_id
>>#DEFINE THREAD_BASE_PRIORITY_MIN -2
>>#DEFINE THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN
>>DECLARE SHORT SetThreadPriority in kernel32 INTEGER hThread, INTEGER nPriority
>>SetThreadPriority(tnProcess_id, THREAD_PRIORITY_LOWEST)
>>
>>Note that I very rarely work with Win API calls... :)
>>
>>
>>
>>>API Text View has the constants you need.
>>>
>>>#DEFINE THREAD_BASE_PRIORITY_MIN -2
>>>#DEFINE THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN
>>>
>>>For VC++ users, it is in the WINNT.H include file.
>>>
>>>>>>Hi All,
>>>>>>
>>>>>>I need to programmatically minimize the DOS application window and set its priority to low from VFP app. I assume I can do it with SendMessage() API function. Any body knows the constants I should use for that?(or better the exact syntax :)
>>>>>
>>>>>What is "the DOS application window"? Are you running a separate program from Visual FoxPro? If so, you can call a separate program, without opening a DOS prompt, just with RUN /n.
>>>>>
>>>>>Hilmar.
>>>>
>>>>Hi Hilmar,
>>>>
>>>>Yes, my VFP app runs FoxPro 2.5 DOS app with RUN /N1 ... command.
>>>>But then I need to minimize that FP DOS window and set its priority to low. (analog to DOS command
>>>>
>>>>START /MIN /LOW foxprox.exe myprog.fxp )
>>>>
>>>>I have the window handle and its Thread Process Id.
>>>>I found out that to set priority to low I can use SetThreadPriority() API function with THREAD_PRIORITY_LOWEST constant but I can't find that constant value and can't find the .H file to see how it is declared.
Nick Neklioudov
Universal Thread Consultant
3 times Microsoft MVP - Visual FoxPro

"I have not failed. I've just found 10,000 ways that don't work." - Thomas Edison
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform