Suppression de la barre de titre de l'application externe à l'aide de c #
Mon application démarre une autre application externe.
Je veux enlever la barre de titre de l'application externe une fois qu'il a commencé.
Est-ce possible, et si oui, comment serait-il fait?
Sur la base des commentaires, je suis en utilisant le code de travail ci-dessous
//Finds a window by class name
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
//Sets a window to be a child window of another window
[DllImport("USER32.DLL")]
public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
//Sets window attributes
[DllImport("USER32.DLL")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
//Gets window attributes
[DllImport("USER32.DLL")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
//assorted constants needed
public static int GWL_STYLE = -16;
public static int WS_CHILD = 0x40000000; //child window
public static int WS_BORDER = 0x00800000; //window with border
public static int WS_DLGFRAME = 0x00400000; //window with double border but no title
public static int WS_CAPTION = WS_BORDER | WS_DLGFRAME; //window with a title bar
public void WindowsReStyle()
{
Process[] Procs = Process.GetProcesses();
foreach (Process proc in Procs)
{
if (proc.ProcessName.StartsWith("notepad"))
{
IntPtr pFoundWindow = proc.MainWindowHandle;
int style = GetWindowLong(pFoundWindow, GWL_STYLE);
SetWindowLong(pFoundWindow, GWL_STYLE, (style & ~WS_CAPTION));
}
}
}
source d'informationauteur Anuya
Vous devez vous connecter pour publier un commentaire.
Pas besoin d'injecter quoi que ce soit, vous pouvez simplement modifier le style windows de bits à l'aide de l'API, par exemple, cela fonctionne pour le bloc-notes, cependant YMMV en fonction de l'application de votre jeu.
le texte d'alt http://img297.imageshack.us/img297/8580/40498359.png
En général, vous ne pouvez pas le faire à moins qu'il y est directement prise en charge par l'application, vous êtes de départ (par exemple, si elle prend un commutateur de ligne de commande pour le retrait de la barre de titre).
Vous ne pouvez contrôler les choses qui sont déjà présents sur le
ProcessStartInfo
classe (c'est à dire ouvrir une nouvelle fenêtre, commencer à la réduire ou l'agrandir, etc...).Ceci est très similaire à un déjà posé la question, et je suis assez sûr que la réponse est que vous ne pouvez pas le faire. (ou, si vous le pouvez, vous avez besoin de creuser dans l'API Windows, qui peut être un défi, en fonction de votre expérience.)
Comment ajouter un bouton à d'autres applications de la barre de titre de la fenêtre (XP/Vista)