ver saber que procesos proceso para estan ejemplos desde corriendo conocer comandos buscar winapi

winapi - saber - ver procesos en ms dos



ManipulaciĆ³n de ventanas usando el identificador de ventana de diferentes procesos en MS Windows(XP) (3)

¿Es posible realizar algunas operaciones con una ventana de otro proceso que tenga su manejador? Lo que me gustaría hacer es: -Quitar la decoración de la ventana -mover la ventana a cualquier posición de la pantalla -la ventana de la ventana permanecer en la parte superior sin hacerlo modal

Un enlace a una herramienta de línea de comandos, script o fragmento de código C / C ++ será genial.

¡Muchas gracias!


Eliminar la decoración de la ventana es un poco complicado. Supongo que probablemente tendrás que configurar una recompensa por tu pregunta.

Verifique la API de Windows para ver a qué funciones debe llamar.

De todos modos, este fragmento debería ayudarte a comenzar:

HWND win_handle = FindWindow (0, "Title Of The Window"); if (win_handle != 0) { /* Do your magic */ // MoveWindow params: handle, x=100, y=200, width=400, height=450, repaint MoveWindow(win_handle, 100, 200, 400, 450, TRUE); } else { std::cout << "!!! FindWindow failed" << std::endl; }


Finalmente, con la ayuda de karlphillip, pude escribir una herramienta que mueve, cambia el tamaño y pega una ventana en la parte superior. Lo que me falta es cómo quitar la decoración y cerrar. Aquí está el código:

#include "windows.h" #include <iostream> #include <string> #include <sstream> #include <algorithm> #include <limits> using namespace std; #ifdef min #undef min #endif int main(int argc, char* argv[]) { char **param= argv; wstring winTitle; bool close = false; unsigned int x=numeric_limits<int>::min(), y=numeric_limits<int>::min(), w=numeric_limits<int>::min(), h=numeric_limits<int>::min(); HWND z=HWND_NOTOPMOST; unsigned int flags=SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER; ++param; while ( *param ) { string sparam(*param); if ( sparam == "-title" ) { ++param; if (!*param) break; sparam =*param; winTitle.resize(sparam.size()); copy (sparam.begin(), sparam.end(), winTitle.begin()); } else if ( sparam == "-move" ) { ++param; if (!*param) break; sparam =*param; stringstream sstr( sparam ); char sep; sstr >> x >>sep >> y; if ( x != numeric_limits<int>::min() && y != numeric_limits<int>::min() ) { flags &= ~SWP_NOMOVE; } } else if ( sparam == "-resize" ) { ++param; if (!*param) break; sparam =*param; stringstream sstr( sparam ); char sep; sstr >> w >>sep >> h; if ( h != numeric_limits<int>::min() && w != numeric_limits<int>::min() ) { flags &= ~SWP_NOSIZE; } } else if ( sparam == "-top" ) { z = HWND_TOP; flags &= ~SWP_NOZORDER; } else if ( sparam == "-staytop" ) { z = HWND_TOPMOST; flags &= ~SWP_NOZORDER; } else if ( sparam == "-bottom" ) { z = HWND_BOTTOM; flags &= ~SWP_NOZORDER; } else if ( sparam == "-hide" ) { flags |= SWP_HIDEWINDOW; } else if ( sparam == "-close" ) { close=true; } ++param; } if ( winTitle.empty() ) { return 1; } HWND win_handle = FindWindow (0, winTitle.c_str()); if (win_handle != 0) { if(close) { TerminateProcess( (HANDLE )GetProcessId( win_handle ), 0 ); return 0; } SetWindowPos( win_handle, z, x, y, w, h, flags ); } else { cout << "!!! FindWindow failed" << endl; } //system("pause"); return 0; }


Decidí tomar otra foto, así que experimenté con su código y agregué lo que faltaba: una opción -naked .

La clave para quitar la decoración vino de aquí . Aunque funciona, eventualmente descubrirás que la aplicación que se desnudó podría comenzar a mostrar algunos errores después de ella.

Disfrutar:

#include "windows.h" #include <iostream> #include <string> #include <sstream> #include <algorithm> #include <limits> using namespace std; #ifdef min #undef min #endif int main(int argc, char* argv[]) { char** param = argv; unsigned int x = numeric_limits<int>::min(), y=numeric_limits<int>::min(), w=numeric_limits<int>::min(), h=numeric_limits<int>::min(); HWND z = HWND_NOTOPMOST; unsigned int flags = (SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER); ++param; wstring winTitle; bool close = false; bool naked = false; while (*param) { string sparam(*param); if (sparam == "-title") { ++param; if (!*param) break; sparam = *param; winTitle.resize(sparam.size()); copy(sparam.begin(), sparam.end(), winTitle.begin()); } else if (sparam == "-move") { ++param; if (!*param) break; sparam =*param; stringstream sstr(sparam); char sep; sstr >> x >>sep >> y; if (x != numeric_limits<int>::min() && y != numeric_limits<int>::min()) { flags &= ~SWP_NOMOVE; } } else if (sparam == "-resize") { ++param; if (!*param) break; sparam = *param; stringstream sstr(sparam); char sep; sstr >> w >>sep >> h; if (h != numeric_limits<int>::min() && w != numeric_limits<int>::min() ) { flags &= ~SWP_NOSIZE; } } else if (sparam == "-top") { z = HWND_TOP; flags &= ~SWP_NOZORDER; } else if (sparam == "-staytop") { z = HWND_TOPMOST; flags &= ~SWP_NOZORDER; } else if (sparam == "-bottom") { z = HWND_BOTTOM; flags &= ~SWP_NOZORDER; } else if (sparam == "-hide") { flags |= SWP_HIDEWINDOW; } else if (sparam == "-close") { close = true; } else if (sparam == "-naked") { naked = true; } ++param; } if (winTitle.empty()) { return -1; } HWND win_handle = FindWindow(0, winTitle.c_str()); if (win_handle != 0) { if (close) { TerminateProcess( (HANDLE )GetProcessId( win_handle ), 0); return 0; } SetWindowPos( win_handle, z, x, y, w, h, flags ); if (naked) { SetWindowLong(win_handle, GWL_STYLE, GetWindowLong(win_handle, GWL_EXSTYLE) | WS_EX_TOPMOST); ShowWindow(win_handle, SW_SHOW); } } else { cout << "!!! FindWindow failed" << endl; } return 0; }