Программисты на c# спасайте
Цитата: STAR от 14.07.2021, 16:49Нашел на просторах интернета такую вот dll https://github.com/DataDink/WindowScrape но уже час сижу ломаю мозг, не могу понять как ей пользоваться, мне нужно вывести окно на передний план с помощью этой dll и поменять его позицию (только через эту dll, тк в ней уже прописаны все методы user32dll).
Нашел на просторах интернета такую вот dll https://github.com/DataDink/WindowScrape но уже час сижу ломаю мозг, не могу понять как ей пользоваться, мне нужно вывести окно на передний план с помощью этой dll и поменять его позицию (только через эту dll, тк в ней уже прописаны все методы user32dll).
Цитата: Никита от 15.07.2021, 01:37Привет)
Что смог найти в инете.
Но без твоей dll.. Думаю, что и этого будет достаточно)
[spoiler title="За полями)"][DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags); [Flags()] private enum SetWindowPosFlags : uint { SynchronousWindowPosition = 0x4000, DeferErase = 0x2000, DrawFrame = 0x0020, FrameChanged = 0x0020, HideWindow = 0x0080, DoNotActivate = 0x0010, DoNotCopyBits = 0x0100, IgnoreMove = 0x0002, DoNotChangeOwnerZOrder = 0x0200, DoNotRedraw = 0x0008, DoNotReposition = 0x0200, DoNotSendChangingEvent = 0x0400, IgnoreResize = 0x0001, IgnoreZOrder = 0x0004, ShowWindow = 0x0040, }[/spoiler]
[spoiler title="Кнопка"]
string app = "Win 10 Tweaker"; IntPtr target_hwnd = FindWindowByCaption(IntPtr.Zero, app); if (target_hwnd == IntPtr.Zero) { MessageBox.Show( $"Процесс \"{app}\" отсутствует"); return; } // Размер и позиция окна. int width = 300; int height = 150; int x = 0; int y = 0; SetWindowPos(target_hwnd, IntPtr.Zero, x, y, width, height, 0);[/spoiler]
Может позднее, кто-то из более шарящих подскажет, как короче сделать)
Привет)
Что смог найти в инете.
Но без твоей dll.. Думаю, что и этого будет достаточно)
[DllImport("user32.dll", EntryPoint = "FindWindow",
SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly,
string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetWindowPos(IntPtr hWnd,
IntPtr hWndInsertAfter, int X, int Y, int cx, int cy,
SetWindowPosFlags uFlags);
[Flags()]
private enum SetWindowPosFlags : uint
{
SynchronousWindowPosition = 0x4000,
DeferErase = 0x2000,
DrawFrame = 0x0020,
FrameChanged = 0x0020,
HideWindow = 0x0080,
DoNotActivate = 0x0010,
DoNotCopyBits = 0x0100,
IgnoreMove = 0x0002,
DoNotChangeOwnerZOrder = 0x0200,
DoNotRedraw = 0x0008,
DoNotReposition = 0x0200,
DoNotSendChangingEvent = 0x0400,
IgnoreResize = 0x0001,
IgnoreZOrder = 0x0004,
ShowWindow = 0x0040,
}
string app = "Win 10 Tweaker";
IntPtr target_hwnd =
FindWindowByCaption(IntPtr.Zero, app);
if (target_hwnd == IntPtr.Zero)
{
MessageBox.Show(
$"Процесс \"{app}\" отсутствует");
return;
}
// Размер и позиция окна.
int width = 300;
int height = 150;
int x = 0;
int y = 0;
SetWindowPos(target_hwnd, IntPtr.Zero,
x, y, width, height, 0);
Может позднее, кто-то из более шарящих подскажет, как короче сделать)
Цитата: STAR от 15.07.2021, 01:55Никита, спасибо за помощь, пока буду пользоваться таком кодом, авось потом с dll все таки разберусь
Никита, спасибо за помощь, пока буду пользоваться таком кодом, авось потом с dll все таки разберусь