
ここはとある都内のオフィスの一角。
前回、『Web API』について学習したお嬢様系若手社員、鉄久乃 レイラ (てくの れいら) さん。
どうやら、勉強したことを自室で振り返っているようです・・・

「そういえば、API には Web API 以外にもいくつか種類があるって言ってましたわね。
なんだっけ…たしか… Windows API とかあったような…名前からして Windows と関係が深そうですわね…」
おお、よく覚えていましたねレイラさん!
せっかく気になっているようですし…それでは今回は、Web API に続いて、Windows API についても解説していっちゃいましょう!

「今回導入早え~ですわね!!!?」

まずは前回のおさらいから。
API (Application Programming Interface) とは、『プログラム同士が、お互いの複雑な中身を知らなくても、特定のルールに従って機能やデータをやり取りするための窓口』のことでしたね。

「そうそう!そんなお話でしたわね!」
その中でも、Windows API とは、Windows OS 自体が持っている機能 (特別なダイアログを出したり、ハードウェアを制御したり) を呼び出すものを指します。
身近な例だと、例えばこんなものがあったりします。
・特定のウィンドウを一番手前 (前面) に持ってくる (SetForegroundWindow)
・コンピューター名を取得する (GetComputerNameA)
・画面上のパーツのサイズなどを取得する (GetSystemMetrics)
PowerBuilder は Windows API を呼び出すのも得意なんですよ。
前回解説した Web API とは違って、Windows API はインターネット通信を行わず、直接パソコンの中の「DLL ファイル (Windows の部品) 」を呼び出して使用していきます。

「なるほど…ちょっとイメージが湧いてきましたわ!」
では次に、今回も簡単なサンプルを元に、Windows API の実際の使い方を紹介していきましょう。
今回は、「現在のアプリのウィンドウが最大化されているかどうかを判定する (IsZoomed) 」 という、とてもシンプルで安全な Windows API を使ったサンプルアプリを作ってみます。
(今回は、当記事公開時点での最新バージョンである、PowerBuilder 2022 R3 日本語版に基づいて解説します)
まずは、ウィンドウ (例:w_main) に、使う Windows API を登録します。
これを PowerBuilder では「外部関数 (External Function) の宣言」と呼びます。
1. ウィンドウのデザイン画面で何もない背景をダブルクリックし、スクリプトエディタを開きます。
2. 画面左上のドロップダウンリストから (Declare) を選びます。
3. 右側のドロップダウンリストから Local External Functions (ローカル外部関数) を選びます。
4. 白い入力エリアに、以下の 1 行を貼り付けます。

// Windowsの "User32.dll" に入っている "IsZoomed" という関数を使用するという宣言 FUNCTION boolean IsZoomed(longptr handle) LIBRARY "User32.DLL"
宣言が終われば、あとは普通の関数のように呼び出すだけです!
ウィンドウに配置したボタン (例:cb_1) の Clicked イベントに、以下のコードを書いて実行してみてください。
(例では、前回の Web API サンプルアプリに追加する形で作成しています)

longptr ll_handle boolean lb_is_max // 1. 親ウィンドウの「ハンドル (Windowsが画面を識別するための整理番号) 」を取得 ll_handle = Handle(Parent) // 2. 登録しておいたWindows API (IsZoomed) を呼び出して、最大化されているか聞きます lb_is_max = IsZoomed(ll_handle) // 3. 結果をメッセージボックスで表示します if lb_is_max = true then MessageBox("結果", "このウィンドウは「最大化」されています!") else MessageBox("結果", "このウィンドウは「通常サイズ (または最小化) 」です。") end if
実行すると…
メッセージボックスが想定通りできましたね!
アプリのウィンドウが最大化されているか否かを確認して、その結果に応じてメッセージボックスを出し分けています。


「おおお!できましたわ~!!」
如何でしたでしょうか?
インターネットの向こう側と通信する「Web API」に対し、今回の Windows API は、自分が今使っているパソコン (Windows OS) そのものに「これやって!」とお願いする機能のことでした。

「なるほど…。
Web API が『遠くのレストランへのデリバリー』なら、Windows API は『お屋敷の中に常駐している専門の職人さん』にお願いするようなイメージですわね!」
オッ良いイメージ!今日は冴えてますねレイラさん!
こちらも一見ハードルが高そうに見える Windows API ですが、マスターすれば PowerBuilder で作れるシステムの「かゆいところ」に手が届くようになります。
皆さんも、まずは簡単な関数から「職人さん」との対話を始めてみてくださいね!

初心者令嬢の PowerBuilder 奮闘記 シリーズ
他のお話はコチラから!