[Delphi:91244] 他のソフトで動いているウインドウの「閉じる」ボタンを表示させない方法

129 views
Skip to first unread message

佐々木 義照

unread,
Mar 28, 2009, 1:04:44 PM3/28/09
to Del...@ml.users.gr.jp
最近は手軽なデーターベースということで、ファイルメーカーを多く使っています。
 
「各種設定」のようなメニューをチャイルドフォームを表示させていますが(自分で作ったフォーム)、この子フォームの「閉じる」「最小化」「最大化」のボタンを表示させない手段がファイルメーカーにはありません。
 
そこで、Delphiでプログラムして、外部からこの子フォームの上記ボタンを表示させない方法はないでしょうか?
 
よろしく、お願いします。
 
佐々木 義照
 
 

KHE00221

unread,
Mar 30, 2009, 12:52:12 AM3/30/09
to Del...@ml.users.gr.jp
子フォームのハンドルが取得できるなら

procedure DeleteButton(Handle: HWND);
var
Style, ExStyle: Cardinal;
begin
if Handle <> 0 then
begin
Style := GetWindowLong(Handle, GWL_STYLE);
ExStyle := GetWindowLong(Handle, GWL_EXSTYLE);
Style := Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU);
ExStyle := ExStyle and not WS_EX_CONTEXTHELP;
SetWindowLong(Handle, GWL_STYLE, Style);
SetWindowLong(Handle, GWL_EXSTYLE, ExStyle);
SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOREPOSITION or SWP_NOSIZE or SWP_NOACTIVATE);
end;
end;

佐々木 義照

unread,
Mar 29, 2009, 11:51:15 AM3/29/09
to Del...@ml.users.gr.jp
> 子フォームのハンドルが取得できるなら
私程度の知識では、取得の方法も知りません。
どのようにして、取得するのでしょうか?
ウインドウ名とかを指定するのでしょうか?
アプリケーション名を指定するのでしょうか?


Fumio Kawamata

unread,
Mar 30, 2009, 9:01:36 AM3/30/09
to Del...@ml.users.gr.jp
こんばんは。川又です。

Mr. XRAYさんのホームページの、halbowさんの解説が参考になるのではないでしょうか。
例えば、
http://mrxray.on.coocan.jp/Halbow/VCL06.html

--
Fumio KAWAMATA fu...@my.email.ne.jp


佐々木 義照

unread,
Mar 30, 2009, 10:45:33 AM3/30/09
to Del...@ml.users.gr.jp
下記のようにしました.
'Error!'はでませんが、反応がありませんでした。
目的としては不十分ですが、ファイルメーカー側で対処しました。
 
ありがとうございます。
 
 
procedure TForm3.FormCreate(Sender: TObject);
begin
  hcal:=FindWindowEx(0, 0, nil, 'FileMaker Pro');
  if hcal =0 then
    ShowMessage('Error!');
end;
 
procedure TForm3.Button2Click(Sender: TObject);
var
  Style,ExStyle:integer;
  h5 :HWND;
begin
 
 h5 :=GetTopWindow(hcal);
 
  if h5 <>0 then
    begin
      Style   := GetWindowLong(h5, GWL_STYLE);
      ExStyle := GetWindowLong(h5, GWL_EXSTYLE);

      Style := Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU);
      ExStyle := ExStyle and not WS_EX_CONTEXTHELP;
      SetWindowLong(h5, GWL_STYLE, Style);
      SetWindowLong(h5, GWL_EXSTYLE, ExStyle);
      SetWindowPos(h5, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOREPOSITION or SWP_NOSIZE or SWP_NOACTIVATE);
    end
    else
      ShowMessage('Error!');
 
end;
 

 
Reply all
Reply to author
Forward
0 new messages