サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPad Air
mrxray.on.coocan.jp
Delphi Programming / Object Pascal [掲載 2016年04月12日] [更新 2016年10月10日] Delphi 一般・その他
2015年08月12日 KB917607 (WinHlp32.exe) をインストールしていない状態で KB917607-Fix.cmd を実行してしまう場合を考慮して,記事の一部を修正 余分と思われる [備考] の文章を削除 [新しい KB917607 (WinHlp32.exe) ファイルのダウンロード] の記事を追加 2015年08月29日 英語版 Windows 8.1 の記事を追加
2013年09月26日 キャプチャした画像表示用のフォームを,全て,新規フォーム作成時と同じ [自動生成] とした.それに伴いサンプルコードを整備して記事も修正 サンプルをいくつか追加.ただし,内容はほとんど同じだが,タイトルと説明を変えている 2013年09月29日 前回の更新で,キャプチャした画像表示用フォームの OnShow が,2 回目以降発生しなくったための修正.Activate イベント処理のコードを追加して,OnShow イベントの処理コードは削除 2013年10月04日 矩形領域選択 (矩形範囲選択) のサンプルを追加 一部のサンプルで,ビットマップの解放処理を忘れていたので修正 2016年04月10日 矩形領域のキャプチャのテストプログラムを,マルチモニタ対応にした Windows Vista 以降,ウィンドウのスタイルがかなり変化しました.Windows XP までの時
Windows Vista 以降,OS の仕様にいろいろな変更がありました.コンポーネントやサンプルコードが動作しなかったり,動作しても正しい結果が得られないことがあります. プログラマー側から見た大きな変更として,プログラムの実行権限に関する「UAC (ユーザアカウント制御)」と「レジストリとファイルの仮想化」機能があります.UAC が有効の時は,ユーザーインターフェイス特権の分離 (UIPI) により,メッセージ関係の処理にも注意が必要です. 以下の最初のリンクの記事には重要なことが書かれています.本ページでは,それらの内容には直接触れていません.各自で確認してください.
Delphi 2006 のメモリマネージャの作者でもある Pierre le Riche 氏が開発した,Delphi と BCB (Borland C++ Builder) 用のメモリマネージャです. アプリケーションでメモリを使用する場合,連続した領域が確保できず,メモリの断片化という現象が発生します.特に,オブジェクトの生成,解放を多く繰返すとこの現象は顕著となります.最悪の場合「メモリ不足」などで処理が中断されることもあります.FastMM はこの問題を改良するためのメモリマネージャーです. .NET ではガベージコレクションという,断片化したメモリを調整して有効に使用する機能があらかじめ備わっています. 本ページでは基本的な使用方法だけ説明しています.詳しい使用方法は以下のリンクの記事,あるいは,FastMM 添付のデモプログラムを参考にしてください.
2012年06月07日 オブジェクトの階層のツリー表示と,サンプルの追加 ページのタイトルを変更 2012年06月09日 Delphi 2007 以前でも利用可能にするために,UIAutomationClient_TLB.pas の文字コードを UTF-8N から SHIFT-JIS に変更した 2012年06月19日 イベントハンドラのサンプルと記事を追加 2015年04月26日 Firefox のボタンをクリックするサンプルコードを修正 FireFox のウィンドウハンドルの取得を真面目なコード (?) に変更して,[戻る] [進む] [閉じる] の全ての操作を実行可能にした 2015年04月28日 [645_ウィンドウの階層のツリー表示] のツール,ユティリティ関係の記事を本ページに移動 IUIAutomation 関係インターフェイスは,IAccessible インターフェイスの後
2015年12月05日 (これより前の履歴は省略) 32 ビット版の Windows 7 へのインストールの記事を追加 UAC が無効の場合に関係する文章を削除 (本記事は UAC が有効の場合の操作なので) 2015年12月09日 Windows 8.1 へのインストールの記事を追加 IDE を管理者権限で起動しなかった場合のエラーダイアログの画像を追加 2015年12月25日 ページタイトルを変更 (旧タイトルは [Windows 7 U64 に Delphi 7 Pro をインストール]) Delphi 6 または 7 を Windows Vista,Windows 7 にインストールしようとしたが,うまくインストールできないとか,インストール後の動作に問題があるとかの発言がネット上にありました.この記事は,それを検証するために行ったものです. しかしながら,筆者の場合,自作のコンポ
▼ TSさん,ありがとうごさいます. nanaさんのサイトが閉鎖されてもう2年ですか. 元々Delphiで仕事をされているわけではないとのことでしたが, いろいろな情報をいただきました. nanaさんのいろいろなことが書いてあり,しっかりと読ませて いただきました. せっかくTSさんに情報提供していただき,またNanaさんがソースコードを 提供してくださったので,挑戦してみました. 環境は,Windows XP(SP3) + Delphi 7 Proです. 必要なものは以下の通りです. NanaさんのReadme.txt内に記述してあるリンク先は,リンク切れのものも あるため,私なりに調べてみました. すべてのコンポーネント,あるいはパッケージのインストールでは,必ず ソースコードのあるフォルダにパスを通しておきます. なお,これらをインストールすると,Delphiの起動がかなりかかるよう
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation uses ShellAPI, Printers, WinSpool; {$R *.dfm} //------------------------------------
8-1 自アプリのウィンドウ情報の取得 最初は、自アプリの場合から始めよう。簡単な例として、TStatusbar のテキストを取得することから始める。もちろん、VCL のプロパティーやメソッドを使わないで取得することを試してみよう。Form1 に Statusbar1 と Memo1、Button1、Button2 を置いて以下のようにする。 List 1 unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) StatusBar1: TStatusBar; Memo1: TMemo; Button1: TButton; Button2: TButton;
unit Unit1; interface uses //テストで定数定義変数を使用する場合は,Office2000を追加する Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Excel2000, OleServer; type TForm1 = class(TForm) GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10:
アプリケーションやコンポーネントを開発していると,どうしても他の環境,OS での動作確認が必要となってきます.そのために何台もの PC を設置するのは難があります.そんな時にはパーチャル PC は役に立ちます.筆者の場合,下図のように,Windows 2000 の時代から Vmware Workstation をインストールして利用しています. 最近 Windows 7 のマシンに,ゲスト OS として Windows Vista を導入したのですが,ホスト OS (Windows 7) と Vmware 上の Vista との LAN の速度が異常に遅いのです.10 数 kB/秒というとんでもない値となっていました.ネット上を検索したところ,VMware と TCP Segmentaion Offload (TSO) という記事を見つけました.この記事の説明にしたがって,ホストマシンであ
2012年08月12日 サムネイル取得とリスト管理用のコードを別ユニットにした Windows Vista, 7 の特大アイコン表示に相当するサイズにも対応 Windows Vista, 7 で透明部分(アルファチャンネル)の描画が行われない)現象への対応 Windows Vista, 7 で保存したサムネイル画像の上下が反転する現象への対策 Delphi 6, 7, 2007, 2009, 2010, XE (全て Pro 版) で動作確認 スレッドを使用するサンプルを削除 2012年08月17日 [1] Delphi 7 で初回,画像が表示されないので, PixelFormat の値をpf32bitとした [2] [リストのインデックスが範囲を超えています] に対する対策コードを追加 [3] [リストのインデックスが範囲を超えています] に対する対策コードを追加 [4] サムネイルの取
このページのサンプルは,開発者がコードの編集ができない他のアプリへの文字列,テキストの送受信のテストプログラムです. 通常,他のアプリ,他のプロセスのデータに対する操作は,共有メモリと言う仕組みを使用しないと出来ません.WM_SETTEXT メッセージや WM_GETTEXT メッセージは特別で,ウィンドウズが仮想メモリ空間のアドレスの問題を自動的に解決してくれる例外的なメッセージです.ただし,文字列の領域を予め確保しておく必要があります. [650_他のアプリへデータ (文字列や画像) の送信 (Delphi 同士)] で使用している WM_COPYDATA も,テキスト以外の送受信ができる特別なメッセージです.しかし,操作される他のアプリ側にも,このメッセージの処理コードを書く必要があります.
システム全体のキー操作とマウス操作のメッセージを捕えるサンプルコードです. キーとマウスのグローバルフックを使用します.キーとマウスのグローバルフックを使用すると,自アプリはもちろん,自アプリ以外でのマウスの操作,キー操作も検出することができます. 本ページのサンプルは [StartHook] ボタンでフックを開始すると,メモ帳が起動します.このメモ帳がアクティブで,入力フォーカスがある,つまり,フォアグランドなウィンドウの時に限って,マウスの操作とキー操作を検出するようにしています. システム全体や,特定のアプリケーションだけのマウス操作やキー操作を検出するようにするのにフックの処理コードは変更する必要はありません.フックからのメッセージの処理部分だけを変更すれば対応できます. フックを登録する SetWindowsHookEx 関数の引数は,ローカルフックとグローバルフックとでは違いま
Halbow,Win32,API,Pascal,Delphi,Top
第6章 ウィンドウの階層について Windows というOSにおけるウィンドウは、特別なオブジェクトである。デスクトップスクリーンに自己を描画する矩形領域を独自にもち、メッセージを受け取ることができるのはウィンドウだけである。VCLでは、ウィンドウを作ってその機能をラップしているのは TWinControl の派生クラスである。VCLのクラスは Delphi の Object Pascal という言語上のクラスであり、そのインスタンスはOSからは見えない。見えているのは、VCLのインスタンスが作るウィンドウだけである。TLabel や TImage 、TPaintBox 、 TSpeedButton などの TGraphicControl の派生クラスは、ウィンドウの特定のクライアント領域の描画機能をカプセル化したものであり、ウィンドウではないのでOSからは見えない。またメッセージを独自に
[注意] ここで言う PC-9801 とは PC-9821 の型番の機種も含めたものを指します.また,PC-9801 のソフトとは,MS-DOS のソフトのことです. 本ページの記事は,PC-9801 と MS-DOS を所有していて,Windows と MS-DOS の基本操作を理解している方を対象としています. 1995年8月に Windows 95 が発売される頃までは,事実上,日本国内では,パソコンと言えば PC-9801 シリーズのことを指していました.その後,1997年10月に NEC も,NEC 自身が言うところの '世界標準機' の発売を開始しています. 現在一般に普及しているパソコンと呼ばれるコンピュータは,通称 DOS/V 機,あるいは IBM PC/AT 互換機と呼ばれていたものです.多くの方が使用しているパソコンには,Windows という OS (基本ソフト) が
この引数のない API の戻り値は、符号なし32ビット値であるが、低位のビットから、A ドライブ、B ドライブ、・・・に対応しており、もしそのそのドライブが存在するならば、対応するビットが1になっている。試してみよう。 List 1 procedure GetLogicalDriveList(List:TStrings); var Drive,Mask:DWORD; i:integer; begin Mask := 1; Drive := GetLogicalDrives; for i := 0 to 25 do begin if (Drive and Mask) <> 0 then List.Add(Char(ord('A')+i)); Mask := Mask shl 1; end; end; procedure TForm1.Button1Click(Sender: TObject)
コンポーネントの登録方法等の記事です.各々のコンポーネントのオンライン・マニュアルのページに記載していた内容を,[サンプルプログラム集] にまとめ,更にこちらに移動したものです. 当サイトでは,いくつかのコンポーネントを提供していますが,コンポーネントの開発そのものに関する記事はほとんどありません. [備考] コンポーネントと同時に配布されている,拡張子が .dcr のファイルにはコンポーネントのアイコンがビットマップ画像で格納されています.Delphi はこのアイコンをツールバーのコンポーネントパレットあるいはツールパレットに表示します..dcr ファイルの実体はリソースファイルです.拡張子を .res に変更すればリソースエディタでアイコン画像を見ることができます. .dcr ファイルを添付していないコンポーネントもあります. 参考リンク [163_コンポーネントのアイコン作成支援プロ
CreateProcess()、WaitForSingleObject()、MsgWaitForMultipleObjects() を使う。 まず最初に、CreateProcess() を使って待ち続ける方法からです。 List 1 function WinExecAndWait32(FileName: string; Visibility: Integer): Longword; var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin FillChar(StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; Star
CreateProcess() を使って起動した GUI アプリの最上位のトップレベルウィンドウのハンドルを取得することを考えよう。起動が開始されてウィンドウが生成するまで WaitForInputIdle() で待つことができる。 List 1 unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementati
エクスプローラでファイルを選んでから右クリックすると右図のようにコンテキストメニューを表示する。例えば、テキストファイルを一つ選んで、コンテキストメニューから「コピー」を選んでも、メモ帳にもテキストエディタにも、「貼り付け」メニュー項目がグレイ表示されていて、貼り付けることができない。では、この場合の「コピー」とは何を意味しているのだろうか。 ワードには右図のように貼り付けることができる。この場合、「パッケージオブジェクト」として貼り付けられるだけで、テキストファイルの内容が表示されるわけではない。ここでは、「エクスプローラからのコピー」とはどんなことなのかを調べる。 最初に、「エクスプローラからのコピー」したとき、クリップボードにどんな形式で格納されているかを調べよう。 List 1 uses Clipbrd; procedure TForm1.Button1Click(Sender:
当サイトのサンプルプログラム集は,主に Delphi の VCL のサンプルを掲載しています. 基本的に,Delphi の「コンポーネントの使い方」のような記事はありません.コンポーネントの作成や開発に関係する記事もほとんどありません.主体はコードとしてのサンプルです. 記事のページでは,設計時と動作時の画面があり,概要を理解しやすいようにしている ほとんどのサンプルに,EXE ファイルを添付しているので,すぐ動作を確認できる ソースファイルも添付しているが,各ページにもコードがあり,ネット上でも確認できる ソースコードや動作内容の説明はあまり詳しくない ソースコードには覚書のためのコメントがあり,見苦しいかも知れない 実行形式ファイルである EXE が添付してあるということは,該当するサンプルコードは,少なくとも筆者の環境では所定の動作をしたということです. 目的の結果を得るためのサンプ
API の稿の 第17章 メモリ操作 で説明したように、Win32 におけるメモリの仮想アドレス空間はプロセスごとに独立している。したがって、何かの情報をメモリに確保してそれを他のプロセスに渡したいとき、そのアドレスを教えてやっても、受け取る方のプロセスにとってそのアドレスは無意味なものになっている。通常はアクセス違反を起こしてどちらかのアプリが強制終了する。Win32 におけるプロセス間通信には、DDE、OLE、パイプ、クリップボード、メールスロットなどがあるらしいが、クリップボード以外では、わたしは Delphi のDDEについて、Delphi2 のときに試したことがあるだけで、ほかの方法についてはやったことがない。ここでは、メッセージを使って任意のメモリブロックをプロセス間でやりとりする方法を調べよう。 メッセージは、メッセージIDそのものがシステムグローバルであり、また、通信するプ
プログラムで使うさまざまな画像や音楽、テキストなどを外部ファイルを参照することなく実行ファイルに埋め込むために、ひとつには Delphi IDE の機能をつかってコンポーネントに予めオブジェクトインスペクタから読み込んでおく方法がある。ここの TPicture と TStringList のカプセル化 では、これを利用して画像やテキストを取り込むために、TPicture と TStringList をカプセル化したコンポーネントを作った。これは、コンポーネントの機能が *.dfm ファイルに取り込まれることを利用した一種のリソースの使い方と言えるだろう。この方法の欠点は、*.dfm ファイルが読みにくくなる他に、実行時にコンポーネントが生成されるときにストリーミングにより読み込まれるため、大きな画像ファイルやテキストファイルを設定したとき起動が遅くなったり、実行時のメモリイメージが大きくな
Delphi 附属の Indy コンポーネントである,TIdHTTP を使用して,指定 URL (サーバ上のプログラム) にデータを送るテストプログラムです.これには Post または Get メソッドを使用します.これらのメソッドは次のようになっています.そこで具体的な簡単な実験をしてみました. [GET] 特定の URL をリクエストして結果を得る ブラウザの URL 欄に入力するのと同じ [POST] 特定の URL へデータを送る サーバの別プログラムやスクリプトなどがデータを処理 以下のテストプログラムのコードではエンコードとデコードの処理をしていますが,Delphi と Indy のバージョンによっては不要なこともあります.また,ネット上のファイル類の操作に共通に言えることですが,URL の文字コードページによっても,あるいは,php,perl 等のコードでは,サーバー側でエン
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; LabeledEdit1 : TLabeledEdit; LabeledEdit2 : TLabeledEdit; LabeledEdit3 : TLabeledEdit; LabeledEdit4 : TLabeledEdit; LabeledEdit5: TLabeledEdit; LabeledEdit6: TLabeledEdit; procedure Button1Click(Sender: TObject); procedure F
次のページ
このページを最初にブックマークしてみませんか?
『[ Delphi Library ] - Mr.XRAY』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く