サイトカレンダー

サイトカレンダーをスキップ

2018年 01月
«
»
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

記事カテゴリ

ユーザー機能


 2018年1月23日(火) 23:05 JST

[Delphi] マシンの稼動状況を確認する死活監視(Ping)

  • 記事を友だちにメール
  • 印刷用ページ
  • 2011年12月27日(火) 00:15 JST
  • 投稿者:
  • 表示回数
    3,125

マシンの死活監視に欠かせないのがPing。

くろねこも社内でアプリケーションサーバーがDBサーバーに接続しに行く前に死活監視を...と言う話を切り出してからはなかなか実現できず、問題だけが積み上がっていた。
だって、それに集中する時間が無いんだもん...

すでに、社内のマネージャからは「ライフワーク」といわれ始めた...

そんな状況を打開するために、ちょっと気合いを入れて調査してみる。

よくあるPingのサンプルプログラムでは管理者権限が必要。
管理者権限が不要といわれているプログラムをいくつか試してみたが動かず暗礁に乗り上げていたが...

本日、先日買ったノートPCで帰宅中に、最悪.net Frameworkでもいいか~と調べていると...
やっぱり、Pingクラスってあるんですね。
さらに、Pingクラスを使っている例が無いかググってみると、WMIで実行する方法がある。
WMIはWin32でも実行できるので、今回はこちらでコーディングしてみることにした。

[Delphi] MainFormOnTaskBarとタスクバーボタン2

  • 記事を友だちにメール
  • 印刷用ページ
  • 2011年8月30日(火) 10:38 JST
  • 投稿者:
  • 表示回数
    1,721

[Delphi] MainFormOnTaskBarとタスクバーボタンで完成できていなかったActiveFormOnTaskBarの動きがようやく完成です。
サポートの方にもご協力いただいて...実現しました。

[Delphi] MainFormOnTaskBarとタスクバーボタン

  • 記事を友だちにメール
  • 印刷用ページ
  • 2011年8月19日(金) 21:26 JST
  • 投稿者:
  • 表示回数
    2,781

Delphi2007 以降からでしょうか?MainFormOnTaskBar と言うプロパティが追加されています。

embarcadero のサイトでは下記のように説明されています。

MainFormOnTaskBar プロパティは、Windows タスクバー ボタンを VCL で扱う方法を制御します。

このプロパティが true の場合、タスクバー ボタンはアプリケーションのメイン フォームを表し、そのキャプションが表示されます。false の場合、タスクバー ボタンは、アプリケーションの(非表示の)メイン ウィンドウを表し、アプリケーションのタイトルが表示されます。
 
Windows Vista Aero 効果を使用するには、MainFormOnTaskBar が true であることが必要です。効果には、ライブ タスクバー サムネイル、動的ウィンドウ、Windows フリップ、Windows フリップ 3D があります。

このプロパティの登場というか、Windows Vista Aero 対応のために Delphi が行った修正によっていろいろとフォームの挙動が変更されました。

[Delphi] HTTPApp.HTMLEncodeの不具合

  • 記事を友だちにメール
  • 印刷用ページ
  • 2011年7月11日(月) 18:40 JST
  • 投稿者:
  • 表示回数
    1,585

HTTPAppユニットにあるHTMLEncodeが正常なHTML文字列を出力してくれない。
文字列の中に & < > " があればそれぞれ&amp; &lt; &gt; &quot; に変換してくれるはずなのだがどうもうまく変換してくれない。

 

Delphiのコンパイラバージョン情報

  • 記事を友だちにメール
  • 印刷用ページ
  • 2011年5月 7日(土) 21:42 JST
  • 投稿者:
  • 表示回数
    105

DELPHIにはコンパイラバージョンが#DEFINEで定義されています。
各VersionのDelphi/C++Builderに対するコンパイラバージョン定義は下記の通り

Delphiバージョン 定義
Delphi1 VER80
Delphi2 VER90
Delphi3 VER100
Delphi4 VER120
Delphi5 VER130
Delphi6 VER140
Kylix VER140
Delphi7 VER150
Delphi8 VER160
Delphi2005 VER170
BDS2006 VER180
TurboDelphi VER180
Delphi2007 VER185(VER180)
Delphi2009 VER200
Delphi2010 VER210
Delphi XE VER220
C++Builderバージョン 定義
C++Builder1 VER93
C++Builder3 VER110
C++Builder4 VER125
C++Builder5 VER130
C++Builder6 VER140
BDS2006 VER180
TurboC++ VER180
C++Builder2007 VER185(VER180)
C++Builder2009 VER200
C++Builder2010 VER210
C++BuilderXE VER220

だから、例えばソース中に

{$IFDEF VER170}
  ShowMessage('Delphi2005です');
{$ENDIF}

と書くことによって、Delphi2005のみメッセージが表示されるようにソースが書けます。
Delphi2007だけは、2006とコンパイラの言語仕様に変更がないためVER180もVER185も定義されています。
Delphiのコンパイラバージョンを調べるプログラムを書いておきます。

program DelphiCompilerVerChk;

uses
  SysUtils, Windows;

{$R *.res}

{-------------------------------
//      文字列を追加する関数
機能:       StringAdd(S, 'メッセージ')
            とすると、改行で区切られてSにメッセージが追加される
            StringAdd(S, 'メッセージ' '/')
            とすると、『/』で区切られてメッセージが追加される
備考:       
履歴:       2009/08/28(金)
              作成
//--▼----------------------▽--}
procedure StringAdd(var OriginalText: String; 
  Const AddText: String; Const Separator: String = #13#10);
var
  i: Integer;
  LenOriginal, LenSeparator, LenAdd: Integer;
begin
  if OriginalText = '' then
  begin
    OriginalText := AddText;
  end else
  begin
    LenOriginal := Length(OriginalText);
    LenSeparator:= Length(Separator);
    LenAdd      := Length(AddText);
    SetLength(OriginalText, LenOriginal + LenSeparator + LenAdd);
    for i := 1 to LenSeparator do
    begin
      OriginalText[LenOriginal + i] := Separator[i];
    end;
    for i := 1 to LenAdd do
    begin
      OriginalText[LenOriginal + LenSeparator + i] := AddText[i];
    end;
  end;
end;
//--△----------------------▲--

var
  MsgStr: String;
begin
  MsgStr := 'Version不明';

{$IFDEF VER80}  MsgStr := 'Delphi1';                    {$ENDIF}

{$IFDEF VER90}  MsgStr := 'Delphi2';                    {$ENDIF}

{$IFDEF VER93}  MsgStr := 'C++Builder1';                {$ENDIF}

{$IFDEF VER100} MsgStr := 'Delphi3';                    {$ENDIF}

{$IFDEF VER110} MsgStr := 'C++Builder3';                {$ENDIF}

{$IFDEF VER120} MsgStr := 'Delphi4';                    {$ENDIF}

{$IFDEF VER125} MsgStr := 'C++Builder4';                {$ENDIF}

{$IFDEF VER130} MsgStr := 'Delphi5';                    {$ENDIF}
{$IFDEF VER130} StringAdd(MsgStr, 'C++Builder5');       {$ENDIF}

{$IFDEF VER140} MsgStr := 'Delphi6';                    {$ENDIF}
{$IFDEF VER140} StringAdd(MsgStr, 'C++Builder6');       {$ENDIF}
{$IFDEF VER140} StringAdd(MsgStr, 'Kylix/2/3');         {$ENDIF}

{$IFDEF VER150} MsgStr := 'Delphi7';                    {$ENDIF}

{$IFDEF VER160} MsgStr := 'Delphi8';                    {$ENDIF}

{$IFDEF VER170} MsgStr := 'Delphi2005';                 {$ENDIF}

{$IFDEF VER180} MsgStr := 'BDS 2006(Delphi/C++)';       {$ENDIF}
{$IFDEF VER180} StringAdd(MsgStr, 'Turbo Delphi/C++');  {$ENDIF}

{$IFDEF VER185} MsgStr := 'Delphi2007';                 {$ENDIF}
{$IFDEF VER185} StringAdd(MsgStr, 'C++Builder2007');    {$ENDIF}

{$IFDEF VER200} MsgStr := 'Delphi2009';                 {$ENDIF}
{$IFDEF VER200} StringAdd(MsgStr, 'C++Builder2009');    {$ENDIF}

{$IFDEF VER210} MsgStr := 'Delphi2010';                 {$ENDIF}
{$IFDEF VER210} StringAdd(MsgStr, 'C++Builder2010');    {$ENDIF}

{$IFDEF VER220} MsgStr := 'Delphi XE';                  {$ENDIF}
{$IFDEF VER220} StringAdd(MsgStr, 'C++Builder XE');     {$ENDIF}

  Windows.MessageBox(0,
    PChar(MsgStr),
    PChar(ExtractFileName(ParamStr(0))), MB_OK);

end.

新着情報

記事 新着(24時間)

-

コメント 新着(2日)

-

トラックバック 新着(2日)

-

リンク 新着(2週)

新しいリンクはありません

ファイル (14日)