SetWindowPos で ウィンドウのサイズをデスクトップのサイズ以上にする方法


ウォレス  2018-02-06 21:07:41  No: 48976

標記のとおり  SetWindowPos で ウィンドウのサイズをデスクトップのサイズ以上にする方法を教えてください。

下記では、(例えば高さが)デスクトップのサイズ以上にはなりません。。。

宜しくお願いします。

//-----------
function FindWindowExtd(partialTitle: string): HWND;
var
  hWndTemp: HWND;
  iLenText: Integer;
  cTitletemp: array [0 .. 254] of Char;
  sTitleTemp: string;
begin
  hWndTemp := FindWindow(nil, nil);
  while hWndTemp <> 0 do
  begin
    iLenText := GetWindowText(hWndTemp, cTitletemp, 255);
    sTitleTemp := cTitletemp;
    sTitleTemp := UpperCase(copy(sTitleTemp, 1, iLenText));
    partialTitle := UpperCase(partialTitle);
    if pos(partialTitle, sTitleTemp) <> 0 then
      Break;
    hWndTemp := GetWindow(hWndTemp, GW_HWNDNEXT);
  end;
  result := hWndTemp;
end;

//---------
var
  hw: HWND;
begin
  hw := FindWindowExtd('IrfanView'); //適当に
  if hw > 0 then
  begin
    SetWindowPos(hw, 0, //
      0, 0, 500, 1900, // X, Y, cx, cy: Integer; 
      SWP_NOMOVE or SWP_NOZORDER {or SWP_FRAMECHANGED});
      
  end;
end;


通りすがり  2018-02-06 22:04:42  No: 48977

これ(ウィンドウはデスクトップよりも大きくなれない)はWindowsによる制限ですね。


ウォレス  2018-02-06 22:45:15  No: 48978

ありがとうございます。
いくつかためしたところ、
FireFox 57.0.2 は何故か制限を超えて大きくできるんです。

APIを使ってリミッタを外す必要があるのかな・・・?と想像していますが、ググってもよくわかりませんです。


tor  2018-02-06 22:45:16  No: 48979

サイズ変更可能なウィンドウの場合、その最大サイズは
ラペヌナヤヘノホヘチリノホニマメッセージで渡されるヘノホヘチリノホニマの中のヘヤモで決まります。
(これは本来、ユーザがドラッグ操作でリサイズする時の最大サイズを表すものですが、モラミなども同じ制限を受けるようです)
デフォルトだとこの値はデスクトップのサイズと同じになっています。

自作のアプリケーションであれば、ラペヌナヤヘノホヘチリノホニマメッセージを自分で処理して中身を書き換えてやれば好きなだけ大きくすることが可能です。
そうでないならグローバルフックで引っ掛ける必要がありそうですね。
スススススススススススススススススススススススススススススススススススススススス
ニコ ウォレス
トコ イーアクッーイッーケィ金ゥ アウコオオコエカ  書込者ノト:ロ 」。「。 ン

ここやヘョリメチルさんのページを参考にグローバルフックをやろうとしていますが

コッッョョッッョソスアキイケ

ラアーメモイヲサカエヲサのせいなのかモラネナが失敗します。。。
ウイッカエヲサ管理者権限ありッなし  で試してみているのですが。

以前はできたのですが(以前といっても恐らくキュウイかリミのころです。恐らく)
スススススススススススススススススススススススススススススススススススススススス
ニコ 通りすがり
トコ イーアクッーイッーケィ金ゥ イーコアウコエケ  書込者ノト:ロ 「「。 ン

ヲサヲサモラネナが失敗します。。。ヲサ
ヌフナは何を返しますか?
スススススススススススススススススススススススススススススススススススススススス
ニコ ヘョリメチル
トコ イーアクッーイッアーィ土ゥ ーケコーカコアウ  書込者ノト:ロ 「「「。 ン

ヲサコッッョョッッョソスアキイケヲサ

ラネ゜ハマユメホチフメナテマメトヲサは,ラヲサヨヲサ以降では機能しません.
これはヲサラヲサヨヲサで導入されたヲサユノミノヲサィユーザーインターフェイス特権の分離機能ゥヲサによるものです.

ロユーザーインターフェイス特権の分離ヲサィユノミノゥン
コッッョョッュッッエクーアオイョ」ナヒニチヌ
スススススススススススススススススススススススススススススススススススススススス
ニコ ヘョリメチル
トコ イーアクッーイッアーィ土ゥ ーケコアアコイキ  書込者ノト:ロ 「「「。 ン

ヲサラネ゜ハマユメホチフメナテマメトヲサは,ラヲサヨヲサ以降では機能しません.

機能させるためには最高レベルの特権が必要です.
特権を取得するにはコードサイニング証明書を取得する必要があります.
スススススススススススススススススススススススススススススススススススススススス
ニコ スタ☆テツ
トコ イーアクッーイッアアィ日ゥ アオコウキコオー  書込者ノト:ロ 「・「。  ン

ニヲサオクョーョイヲサを試しにダウンロードしてみましたが再現できません。
やってみたことはウィンドウを左に動かして右に引き延ばしてみました。
少しだけデスクトップ幅より余計に大きくなった感じはありましたが、
幾らでも大きくなるという感じではありません。
ラヲサアーヲサミヲサカエ
再現できるやり方が分かれば調べてみようという気になるのですが。
普通はできないと思いますよ。
スススススススススススススススススススススススススススススススススススススススス
ニコ スタ☆テツ
トコ イーアクッーイッアアィ日ゥ アキコアエコエカ  書込者ノト:ロ 「・「。  ン

すみません、簡単に実装できます。
コッッョョッッッッーケウ゜ニモフョ
ここのマウス操作での最大サイズを変更するだけです。
スススススススススススススススススススススススススススススススススススススススス
ニコ スタ☆テツヲサ
トコ イーアクッーイッアアィ日ゥ アキコアキコーオ  書込者ノト:ロ 「・「。  ン

あぁ、他のアプリなんですね…
失礼しました。
スススススススススススススススススススススススススススススススススススススススス
ニコ ウォレス
トコ イーアクッーイッアエィ水ゥ アーコエイコーク  書込者ノト:ロ 」。「。 ン

皆さんありがとうございます。
「コードサイニング証明書」について調べてみます。
かつて動作したコードも互換性の問題が結構出ますね。。
スススススススススススススススススススススススススススススススススススススススス
ニコ ヘョリメチル
トコ イーアクッーイッアエィ水ゥ アアコエエコオウ  書込者ノト:ロ 「「「! ン

ヲサかつて動作したコードも互換性の問題が結構出ますね。。ヲサ

ですね.

ヲサ「コードサイニング証明書」について調べてみます。ヲサ

今はどうなんでしょう.数年前だと年間ヲサオヲサ万とかヲサケヲサ万円だった記憶があります.
以下のもこの関係ですね.

ロナリナヲサ起動時のヲサロヲサ不明な発行元ヲサンヲサダイアログを非表示にするン
コッッョョョットッマッモトョ


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加