- - PR -
外部アプリのタイトルバーを消去したい
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-06-06 21:47
Windowsアプリケーションから現在立ち上がっている別Window(EXCELなど)を
捕まえて、タイトルバーを消去する処理を行いたいと考えています。 別Windowを捕まえる所までは下記コードでできました。 [DllImport("user32.dll")] public static extern int FindWindow( string lpClassName, string lpWindowName ); private void button7_Click(object sender, System.EventArgs e) { int iHandle = FindWindow("XLMAIN","Microsoft Excel - Book1"); } が、タイトルバーを消すという処理がウィンドウ関数に見当たりませんでした。 sendMessage(),getWindowInfo(),getTitleInfo()などいくつか関数を チェックしてみたのですが、タイトルバーの状態は取れるけれども それを消去することが出来ないようなのです。 別のWindowのタイトルバーを消すにはどのような方法があるのでしょうか? 【開発環境】 OS:Win XP Pro SP2 IDE:VisualStudio .NET 2002 Lang:C# |
|
投稿日時: 2005-06-06 21:55
SetWindowLongでウィンドウスタイルのWS_CAPTIONフラグを落とす事になると思う。けど、それで美味く行くかは操作されるアプリケーション側の問題もあるので・・・(^^;
操作の対象となるのはExcelだけでしょうか?Excelにはフルスクリーンモードが用意されているので、VSTOからフルスクリーンモードにできないか検討するほうが良いと思う。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ |
|
投稿日時: 2005-06-06 22:23
甕星様、ありがとうございました。
当方C#暦2日目なので、APIを把握するのが一苦労です…。 SetWindowLongで検索かけた所、正に当方がやりたいことが下記URLに 書いてありました。 http://www.athomejp.com/goldfish/vcs/titlelessform.asp windowの参照を自分からFindWindowした参照に変えたら動きました。 実際に操作の対象となるのはIEになる予定なので、下記コードで 動作確認を取りました。 private void button7_Click(object sender, System.EventArgs e) { IntPtr iHandle = (IntPtr)FindWindow("IEFrame", "about:blank - Microsoft Internet Explorer"); UInt32 unSyle = GetWindowLong(iHandle, GWL.STYLE); unSyle = (unSyle & ~WS_CAPTION); // スタイルを反映 UInt32 unret = SetWindowLong(iHandle, GWL.STYLE,unSyle); } [DllImport( "user32.dll")] private static extern UInt32 SetWindowLong(IntPtr hWnd, GWL index, UInt32 unValue); [DllImport( "user32.dll")] private static extern UInt32 GetWindowLong(IntPtr hWnd,GWL index); これから実際のアプリと組み込んでみたいと思います。 どうもありがとうございました。 |
1
