Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 575429
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T13:56:23+00:00 2026-05-13T13:56:23+00:00

I have this old Fortran executable that can only be accessed through its GUI,

  • 0

I have this old Fortran executable that can only be accessed through its GUI, and is too complicated to rewrite. I need to integrate it into a tool we are building, so I wrote a GUI wrapper in C# using the White library (certainly not ideal, but I couldn’t think of a better approach). This works ok, but when my program runs, the GUI pops up, and certain actions (such as listbox selections) force a mouse movement. I’d like the interaction with the Fortran tool to be transparent to the user.

I’ve read a couple posts here about a CreateDesktop function in the user32 dll that may allow me to execute the wrapper on another desktop window not seen by the user. Will I still be able to automate GUI interaction on such a desktop? I’ve searched around, haven’t found any examples of how to use a desktop created this way. Does anyone have a good reference for this?

Alternatively, is there a better way to go about this process?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T13:56:23+00:00Added an answer on May 13, 2026 at 1:56 pm

    Desktops are probably a good way to achieve what you want.

    Desktops can be non-visible, which allows for automation peers to manipulate the UI without the risk of input focus or pop-over behavior.

    Desktops represent a logical screen layout with zero or more Windows on it. There are several API methods available to manipulate and interact with desktops in Win32, including (among them) CreateDesktop().

    Each desktop has a name (e.g. “Default” “WinLogon” “MyOwnName”) and exists as items within a Window Station, resulting in full names such as “WinSta0\Default”. Desktops were introduced in NT 3.10. Window handles, window messages, “WindowHooks” etc. all live within a single desktop and cannot cross that boundary. However, it is possible to perform peer-automation (such as the kind you describe with the White library) on a different desktop than the one your app runs in.

    Unlike Sessions and Window Stations, each thread in a process may be connected to a different Desktop within the WinStation of its process, and this association can be changed on the fly in any thread which does not have any windows (not even hidden ones). Security-wise, each Desktop has its own security descriptor. You can get a handle to the Desktop of your own process by calling GetThreadDesktop(), for other tasks, OpenDesktop() and OpenInputDesktop() and CreateDesktop() are interesting APIs.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 289k
  • Answers 289k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer In the JavaScript where you open/fill in the full suggestions,… May 13, 2026 at 5:33 pm
  • Editorial Team
    Editorial Team added an answer If I understand correctly SpeakClipboard.exe is actually a shortcut? If… May 13, 2026 at 5:33 pm
  • Editorial Team
    Editorial Team added an answer The use of a dynamic library is similar to a… May 13, 2026 at 5:33 pm

Related Questions

The IT department I work in as a programmer revolves around a 30+ year
The "goto" statement comes straight out of ASM or any other assembler language. Here's
I have this old survey link that is has been superseded by another link,
I have this table: old_id integer NOT NULL, new_id integer Now I want to
I have this ajax call to a doop.php . function doop(){ var old =

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.