Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 151
  • Last Modified:

Controlling other opened windows.

How do I set focus on  another opened window, e.g. notepad and start sending tabs and keystrokes ? I'm trying to get around the Delphi/400 client installation when keying the QSECOFR's password. I have a few hundred installations ...
0
wengwah
Asked:
wengwah
1 Solution
 
ZifNabCommented:
Hi wengwah,

What about APi BringWindowToTop? You can use  FindWindow to look for other windows by class name, or use EnumWindows or GetWindow to look through the list of current windows.

The BringWindowToTop function brings the specified window to the top of the Z order. If the window is a top-level window, it is activated. If the window is a child window, the top-level parent window associated with the child window is activated.

BOOL BringWindowToTop(

    HWND  hWnd       // handle of window
   );      
Parameters

hWnd

Identifies the window to bring to the top of the Z order.

Return Value

If the function succeeds, the return value is TRUE.
If the function fails, the return value is FALSE. To get extended error information, call GetLastError.

Regards, Zif.

0
 
MatveyCommented:
You have  Windows.SetFocus( HWND ), and you can find the handle of a window, by it's title for example, using FindWindow and GetWindow (look in win32.hlp).

Sending keystrokes is either sending WM_KEYDOWN, WM_CHAR messages using SendMessage, or you have the Keybd_event function, which is the best thing to use here (set the focus first).

BWT what's QSECOFR, or whatever you mean?
0
 
MatveyCommented:
Zif! You did it again! ;-)
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
MatveyCommented:
You have  Windows.SetFocus( HWND ), and you can find the handle of a window, by it's title for example, using FindWindow and GetWindow (look in win32.hlp).

Sending keystrokes is either sending WM_KEYDOWN, WM_CHAR messages using SendMessage, or you have the Keybd_event function, which is the best thing to use here (set the focus first).

BWT what's QSECOFR, or whatever you mean?
0
 
philipleighsCommented:
Have a look in the Extras\SendKeys directory on the Delphi CD. SendKeys.pas has an AppActivate routine where you supply a window name.
Also, there is SendKeys which takes a string, and a boolean wait value.
Might be just what you're looking for.

Cheers,
Phil.
0
 
MadshiCommented:
I would prefer just sending WM_CHAR/WM_KEYDOWN/WM_KEYUP messages to the window without activating or focussing the it, because win98 sometimes makes problems with activating windows. Sometimes the program that you activated is in reality NOT activated, but only blinking in the taskbar.

Regards, Madshi.
0
 
wengwahAuthor Commented:
Forgot to mention that I'm really  new to Delphi 3/Win32 API programming.   I would appreciate some kind of roadmap on this.

Much appeciated the help and Merry Christmas!
0
 
MatveyCommented:
API is something that we aren't suppose to like much, but we have to learn to live with it.
API is based on handles and messages, which are simple constant numbers. Every object has it's handle (index), and you can access it with this handle, using API functions. These functions are simple DLL extracts, that are commonally used by all windows programming tools.
The best thing to do is register (free) in the MSDN, or use the SDK, which is mostly just Win32.HLP. You can find almost all documentation in there, though on MS site it's more organized and updated. (http://premium.microsoft.com/msdn/library/).

--Matvey
0
 
MatveyCommented:
Marry Christmass!
0
 
adengCommented:
In Windows 98, if your program that you activated is in reality NOT activated, but only blinking in  the taskbar try :

SetWindowPos(Handle, HWND_TOPMOST,
                         0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
SetWindowPos(Handle, HWND_NOTOPMOST,
                         0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);

it works for me.

0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now