Member 12599699 Ответов: 3

Как мне получить адрес моего активного окна на компьютере в C#


Привет Мои Друзья
Мне очень жаль, что у меня нет хорошей письменности.
Я хочу получить адрес моего активного окна в c#
например:
Окно Мой компьютер активен: - > C:\Program файлы (x86)\Adobe\Photoshop CS
Теперь я хочу, чтобы программа дала это адресное окно в C# или обратилась к этому окну.
Пожалуйста, Помогите Мне.
Спасибо.

Что я уже пробовал:

Пожалуйста, помогите мне только с языком c#
Если у вас есть проект II, я буду благодарен представить его.
спасибо.

Afzaal Ahmad Zeeshan

Они называются ручками в Windows. Но почему вам нужна эта ручка, в значительной степени неясно. Вы пытались получить список запущенных процессов и получить один из них оттуда? Кроме того, где ты хочешь это передать? Кроме того, я помню только методы открытия каталога в Проводнике Windows, но не помню, как получить active directory.

Sergey Alexandrovich Kryukov

Вероятно, спрашивающий имеет в виду путь к почтовому исполняемому модулю процесса, который в данный момент показывает активное окно.
—СА

Sergey Alexandrovich Kryukov

Могу я спросить вас: почему? Какова будет цель этого?
—СА

Member 12599699

да.
Я планирую написать код по адресу, например:on active path copy a folder on this

Sergey Alexandrovich Kryukov

Мой вопрос был: почему? зачем вам это нужно? и почему только путь к модулю, показывающему активные окна? что вы хотите с ним делать и почему? Быть активным окном имеет мало общего с его функциональностью, особенно для внешнего процесса.
—СА

3 Ответов

Рейтинг:
0

Sergey Alexandrovich Kryukov

Вы можете получить все технологические процессы и попробуйте получить дескриптор главного окна каждого из них с помощью System.Diagnostics.Process.MainWindowHandle:
Процесс.Метод GetProcesses (System.Диагностика),
Процесс.Свойство MainWindowHandle (System.Диагностика).

Обратить внимание: MainWindowHandle может выбросить и исключение; поэтому вы должны поймать его и просто проигнорировать этот случай.

Для каждой ручки вы можете GetForegroundWindow так, как вы написали в решении 3 (но это не решение).

—СА


Рейтинг:
0

Member 12599256

unsafe
{
  var notepadProcs = Process.GetProcessesByName("notepad");
  if (notepadProcs.Length > 0)
  {
    // Main window handle in IntPtr
    var mainWindowHandle = notepadProcs[0].MainWindowHandle;

    // Main window handle in unmanaged pointer
    var mainWindowPtr = (byte*) mainWindowHandle.ToPointer();
  }
}


Рейтинг:
0

Member 12599256

[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();

...
IntPtr activeWindow = GetForegroundWindow();
byte *mainWindowPtr = (byte*) activeWindow.ToPointer();
...