2006年8月30日 (水)

HSP3 サンプル スクリプト 「月間カレンダーコントロール関連定数」

 ウィンドウズのコモンコントロール「月間カレンダーコントロール」関連の定数リスト。

 ソースはサイドバーリンクの『プログラミング工房』 - 「HSPの部屋」にあります。

| | コメント (0) | トラックバック (0)

2006年6月21日 (水)

HSP3 サンプル スクリプト 「名なしパイプと独自メッセージによるプロセス間通信(エディタと外部プログラムの連携)」

 このサンプルは、名なしパイプと独自のウィンドウメッセージを利用し、2つのアプリケーション間でテキストデータのやりとりを行う機能を記述したスクリプトです。動作確認はHSP3.1 beta3 / WinXP Pro SP2で行っています。

 サンプルの"editor.hsp"と"tool.hsp"は、それぞれランチャー機能付きのテキストエディタと、エディタから起動されてエディタとプロセス間通信をしながら小さな仕事を行うユーティリティを模して書かれています(サンプルなので構造はごくシンプルです)。ちょうどテキストエディタのTeraPadとTeraPadツールのような関係です。(このサンプルはTeraPadの仕組みを調べて書いたわけではありません)

 2つのソフトが行う処理の流れは以下のようになります。

 editor.exe起動(editor.hspを読み込みmesboxに表示。tool.exe起動用のbuttonを表示)(ユーザが操作)
  ↓
 mesbox内のテキストの一部または全体を選択(ユーザが操作)
  ↓
 editor.exeのウィンドウ上のボタンをクリックしてtool.exeを起動(ユーザが操作)
  ↓
 tool.exeがeditor.exeのウィンドウを検知したあと、editor.exeに対して
 mesbox内の選択テキストを送信するように要求する
  ↓
 editor.exeがtool.exeにデータを送る
  ↓
 tool.exeが受け取ったテキストを加工する
  ↓
 tool.exeがeditor.exeに対してデータを受け取る処理に入るように要求する
  ↓
 tool.exeが加工済みのテキストをeditor.exeに送り返す
  ↓
 editor.exeが受け取ったテキストをmesbox内の選択テキストと置き換える
  ↓
 終了

 "tool.exe"は"editor.exe"から起動され自分の仕事を完了すると自動的に終了します……


 続きはサイドバーリンクの「プログラミング工房」で。

| | コメント (0) | トラックバック (0)

2006年5月20日 (土)

HSP3 サンプル スクリプト 「標準出力をパイプにリダイレクトしてコンソール・アプリケーションを実行し、その出力を変数で受け取る」

 HSP3からコンソール・アプリケーションを起動し、そのアプリが出力したデータを直接変数で受け取るサンプル スクリプト。

 詳しくはサイドバーリンクの「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

2006年1月18日 (水)

HSP3 サンプル スクリプト 「Amazon E-Commerce Service(ECS)から取得したデータをXMLパーサー(MSXML)で解析する」

 リンク先のスクリプトは、HSP3のhspinet.dllの命令を使ってAmazon E-Commerce Service(以下ECS)にアクセスし、そこから取得したXML形式の商品データをCOMコンポーネントのMSXMLで解析するプログラムです。

 ECSとはオンラインショップのAmazonが提供しているAmazon Web Service(AWS)というサービスの一つで、登録ユーザはAmazonの商品データベースに自由にアクセスしたり、ショッピングカート機能を自分のウェブサイトに組み込んだりといった機能を無料で利用することができます。ユーザの多くはアマゾン・アソシエイト・プログラムと組み合わせる形で利用していると思われます。Amazon Web Service(AWS)のページはこちら

 リンク先のスクリプトでは、RESTと呼ばれるHTTP経由のアクセス方法でECSのデータベースから商品データをダウンロードし、一度ファイルに保存してからMSXMLによってXML形式のデータを解析、切り出した商品情報を使ってシンプルな内容のウェブページ(HTMLファイル)を生成しています。生成されるHTMLファイルの例はこちら

 詳しくはサイドバーリンクの「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

2005年12月 4日 (日)

HSP3 サンプル スクリプト 「実行ファイルがGUIアプリかコンソール・アプリか調べる」

 Windowsで特定のパスにある実行ファイルがGUIアプリかコンソール・アプリかを見分けるには、実行ファイル自体に埋めこまれたサブシステムを表す値を参照する必要があります。

 通常のWindowsアプリの実行ファイルは、MS-DOS上で実行するためのプログラムとWindows上で実行するためのプログラムが合体した形式になっていて、サブシステムを表す値はWindows用プログラムのエリアに埋めこまれています。(最近のアプリではMS-DOS用のプログラムは中身のないダミーであることが多い)

 サブシステムの値の位置を特定するには、まずMS-DOS用のプログラムエリアに埋めこまれているWindows用プログラムエリアの開始位置(=PEシグネチャへのオフセット)を参照し、その開始位置にサブシステムを表すデータへのオフセット(固定値)を加えます。この位置にある2バイトのデータが目的の情報です。

 値が表す意味はリンク先のスクリプトのマクロにある通りです。例えばHSPで作成した実行ファイルをリンク先のスクリプトでチェックすると2か3になります。

 ちなみにWin32APIの"GetBinaryType"という関数はWin32/Win16/DOSの種別を判定できるだけで、HSPで作成した実行ファイルをチェックすると、"hsp3cl.hrt"を使うか否かに関わらず「Win32」と判定されます。

 詳しくはサイドバーリンクの「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

2005年11月26日 (土)

HSP3 サンプル スクリプト 「ウィンドウ メッセージ定義マクロ」

 詳しくは「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

HSP3 サンプル スクリプト 「クリップボード内のテキストに行番号を付加する」

 詳しくは「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

2005年11月17日 (木)

HSP3 サンプル スクリプト 「mesboxを警告音(Beep)が出ないinputとして使う」

 HSP 2.61のinputオブジェクトはフォーカスがある時にEnterキーやTabキーを押しても警告音が鳴らないように作られていましたが、HSP 3.0(a)ではまだ警告音が鳴ってしまう現象は修正されていません。

 リンク先のソースははmesboxを使って警告音が鳴らないinputもどきを作るスクリプトです。ポイントはonkey命令を使ってEnterキーの押し下げを検知して、mesboxに改行が追加される前に一度中身のテキストをコピーしておき、await命令の所で改行が追加されたあとでそのテキストをmesboxに戻すことです。

 詳しくは「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

HSP3 サンプル スクリプト 「仮想キーコード定義マクロ」

 Windows用キーボードのほぼすべてのキーコードをHSP3用のマクロにしたものです。Tatsuo Sugiharaさんの仮想キーコード表のページを元に作成しました。

 詳しくは「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

HSP3 サンプル スクリプト 「標準出力をファイルにリダイレクトしてコンソール・アプリケーションを実行」

 スクリプト上で出力用ファイルとデータ受け渡し用のパイプを作成してコンソール・アプリを起動する処理のサンプルです。

 詳しくは「プログラミング工房」へ

| | コメント (0) | トラックバック (0)

2005年10月 5日 (水)

HSP3 サンプル スクリプト 「2つのコンソール・アプリをパイプでつないで実行」

リンク先はコマンドプロンプト(cmd.exe)で2つのコンソール・アプリをパイプ記号("|")でつないだコマンドラインを実行したときの動作を再現するスクリプトです。名無しパイプを利用しています。

 詳しくは「プログラミング工房」へ

| | コメント (0) | トラックバック (0)