DelFusa Blog 総本山

プログラミングの話題とかです。

NEW | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

小物で大げさに話と風呂敷を広げて


          _________
   ∧,,∧   / いやはや
  ミ,,゚Д゚彡<  まったりしっとり
   ミ つ旦)~~ \ 寒い日がつづきま....
 ~ミ  ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪

寒いねー。

こんなに寒いとCodeGearデブキャンプくらいしか楽しみがないですね~。
まあ、そりゃ、大げさでウソですが。
ちょっと楽しみですね、ダイヤモンドホール。
いっけるっかな。いっけるっかな.......

次の日の目黒何とか園のDevelopers Summit は、ちょっと無理ぽかなあ。


さてと、


ちょっとDelphiSplashChangerの動作をお伝えしておきます。

DelphiSplashChanger本体は、自分のプロセス優先度を低くして
起動時にBDSをノンスプラッシュで立ち上げてます。
そのとき、プロセスIDゲットしてて

そしてタイマーでウィンドウ列挙を繰り返してて
その列挙したウィンドウの中に起動したプロセスIDがあらわれることで
BDSのウィンドウが表示されたな。と感知するので自分を閉じています。

ああ、ダウソが面倒だったかな、ソースおいてみますね。

procedure TSplashForm.FormCreate(Sender: TObject);
begin
 SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);

 FTimerEventFlag := False;
 Timer1.Enabled := False;
 Timer1.Interval := 500;
 FStartTime := Now; //スタート時間

 Self.BorderStyle := bsNone;
 Self.Position := poScreenCenter;
// Self.FormStyle := fsStayOnTop;

 if FileExists(AppFolderPath+PathDelim+'splash.png') then
 begin
  Image1.Picture.LoadFromFile(AppFolderPath+PathDelim+'splash.png');
  Self.Width := Image1.Picture.Width;
  Self.Height := Image1.Picture.Height;
 end else
 begin
  Self.Width := 0;
  Self.Height := 0;
 end;

 IniRead;

 if FileExists(FDelphiFullPath) then
 begin
  FDelphiIDEProcessID :=
   EasyCreateProcess(IncludeBothEndsStr(FDelphiFullPath, '"')+' /ns', False);
  Timer1.Enabled := True;
 end else
 begin
  Application.Terminate;
 end;
end;

procedure TSplashForm.IniRead;
var
 Ini: TIniFile;
begin
 Ini := TIniFile.Create(AppIniFilePath);
 with Ini do try
 FDelphiFullPath := ReadString('Delphi', 'FullPath', '');
 finally Ini.Free; end;
end;

procedure TSplashForm.Timer1Timer(Sender: TObject);
var
 WinList: TObjectList;
 WinInfo: TWinInfo;
 i: Integer;
begin
 if 3 <= MinutesBetween(Now, FStartTime) then Self.Close;

 if FTimerEventFlag then Exit;

 FTimerEventFlag := True; try
 WinList := TObjectList.Create; try
 EnumWindowInfo(WinList, 1, False);
 for i := 0 to WinList.Count - 1 do
 begin
  WinInfo := TWinInfo(WinList.Items[i]);
  if WinInfo.ProcessID <> FDelphiIDEProcessID then Continue;

  if WinInfo.Visible = False then Continue;
  if SameText(WinInfo.WindowClass, 'TApplication') then Continue;
  Self.Close;

 end;
 finally WinList.Free; end;
 finally FTimerEventFlag := False; end;
end;
そんなに長くないし、わざと短くしたわけでもないっす。
最後にTApplicationクラスだけは無視するようにしているのが
かわいらしいでしょ?

プロセスIDをみていて、ウィンドウの表示をチェックしているので
もちろん複数のBDS起動にも問題なく使えます。
ほんの数行を、改良すればRADStudio以外のソフトでも
Splash画面を持っていないソフトに対して
Splash機能を追加できるソフトとして改造できます。

ウィンドウ列挙やプロセスIDをすぐに使えるのは
自作Libraryがあるからでして。とても便利なわけですが

ちょっと強調させてもらいたい事柄があります。

ちょっと前を通りますよ。ってヤツです。


シュパー           
______∧,,∧_
_____ミ,,゚Д゚彡 
_____ ミ ⊃ つ 
____~ミ,, ,,〃 
____ ∪ ∪


『スプラッシュ画面のついていない"あらゆる"ソフトウェアに対して
 任意の画像をスプラッシュ画面として採用できる機能を追加できるソフトウェア』
を、ものの1時間か2時間程度で作れてしまう。

ああ、もちろんWindowsに限りますが、

まあ、おそらくこのページを見ている、あなた

が、使っていて使いこなしている道具は、そういうものです。



他のどこかの言語にそ・ん・な・芸当が可能なのかと、いいましょうか。

まあ、まず無理でしょうね。


Delphiオンリーです。
VC++では、ここまで短時間で開発できないでしょ。
ここまでソース行数は減らせないでしょ。
(まあ、ラッピングしたらできるという噂もあるけどさ)

こんなのもありますが、どうなんでしょう。
第四回ライブコーディングはMozilla 24で!
http://japan.cnet.com/blog/suzukiken/2007/09/14/entry_mozilla_24/

Delphiコードで参加する。つーと、きっと聴衆は何やっているかわかりませんでしょう。


ところがどっこい、その他言語や開発環境で
将来にわたって汎用的に利用できる何かを仕上げまでいれて
短期間で作り出せるもの?なのかな?

プログラムより、スプラッシュ画面画像をつくる方が遙かに時間かかっちゃった。
それくらいDelphiは高速開発。


どうだろうね。Delphi一本の漏れには他言語の実力とか比較できない?
そう思う?
実は今、会社でMFCやっててね!(w
人の引き継ぎ仕事なわけですが、かなり楽しませてもらっています。結構感動。
比較対象を知る事で初めて比較が出来る。というのは当然です。

VCLと、MFC、両方しってて何かをMFCで作りたいとは思うかな?
そんな人いたら見てみたい。本当に。
もしも漏れがMFCのスキルが存分に上がったとしても、どうやっても何があっても選択の道は決まってくるよね。

Eclipseもいいんだろうけど成果物の完成度はやっぱりDelphiです。
Winべったりで全然よしです。
Java製のChat&Messengerも使ってますし
IPメッセと比べても機能が優れててとてもいいですし
仕上がりもかなりよくJavaを感じさせませんが、透明化APIを送ると変ですね。
あと、JavaVMだからプロセスに対して再起動とかかけれないし。
Chat&Messengerもネイティブ製だったらもっといいんだろうな。って思うところがあります。


世間には、未だに多くの有能な人がDelphiを使っていますよね。
C++Builderを使えば、C++の人でも、Delphi譲りの高速開発が出来るです。
言語にこだわらずDelphiVCLが使えるのって結構いい。

そういう選択を、知っている人は知っててやっている。ということです。
Delphiの先行く末に不安に思うかどうかはともかくも、現時点で使いこなしている人はいます。
世間で使っている人が少なくても、使える道具がすぐそこにあるわけで

RPGでもでてくるでしょ。レアアイテム。
その目の前にあるIDEは、
能力高い"あなた"だけが使いこなせる、レアウェポン。かな。

まあ、漏れは使い慣れた自作ライブラリでより強くレアウェポンを増強してます。
みなさんも少しづつ強くなっていっているでしょう。
俺よりツオイ人もたくさんいるでしょう。

使いこなせるあなたには、使いこなすと強くなり、活躍でき作り出せる自由があるわけで
反対にいうと、まわりのMS環境とかしか使いこなせない人には、実は自由がなかったり。
するかもしれません。

ちょっと自由度が低くて、ドーヨっていう、具体例をあげちゃいましょうか。
1年半前の記事で古いといわれりゃ古いですが、スプラッシュで検索してたらこんなページを見つけました。
.Netアプリケーションの起動が遅いことについて|.NET Framework 2.0 と C#での開発ブログ
http://ameblo.jp/norixp/entry-10013581738.html


よくよく読んでみてみ。中の人は「ちょっと遊んでみた」そうですが
スプラッシュ画面をつくるだけで結構必死で素敵な事になっています。
Delphi使い、BCB使いのみなみなさん。こういうので悩みたい?

漏れのプログラム、あと2・3行、改造したらどーだろうか。
二度と.NETの"全"開発者ユーザーは
専用でスプラッシュ画面を実装する必要が、なくなるよ。

・・・なーんつて、ちょっと高度な煽りをしてみた・・・


                  _____________
                /
          ∧,,∧  <  だからDelphi使えヨ!
         ミ゚Д゚,,彡_ \____________
     / ̄ ̄∪ ∪ /|
   /∧_∧    //|
  / ( ;´∀`)_//┌─────────
 || ̄(     つ ||/ <  今どき工作員ですか・・・
 || (_○___)  ||   └─────────



ま。そういう事。例えば.NETがある部分、"不自由"でいても
もちろんNewsサイトでたくさん取り上げられたりもするし
不自由ながらいろいろ工夫して高度な事をしている人もいるし
使いやすい面もあり、言語仕様もいい部分もある。
人がわんさかコミュニケーションしているのをみて、

「将来性はあっちの方が...」なんて気持ちはわからなくはないよ。
「情報も少ないし...」なんて思うかもね。

ただ、よくよく腐らずに、色眼鏡をかけずに見るといい。
あなたの使っている道具は、実はレアウェポンな力を持っていて

真の潜在力は目の前にあり、それを引き出すよい道具であるはずだよ。

2chでその道具がダメダ。ダメダ。道具メーカーがダメダ。ダメダ。
それよく聞くし、俺も言うときよくあるけど、
そこから先にも進みたいかな。

つうことで、ガンガンDelphi使っていくぜよ。
というか、既存ユーザーもどんどん使ってヨシですよ。

誰かがいいコンポ作ったりテクニック公開したりして
漏れが利用させてもらって、よりいいもの楽に作れますよーーに....


               それがwin-winの関係かと....
   ∧ ,,∧     ウニャムニャ
| ̄ミ*-д-ミ ̄| 
|\ミつ⌒⌒⌒ \
|  \        \  そして漏れのブログが人気でて
\  |⌒⌒⌒⌒⌒|  本とか書いたり....ウニャムニャ....
  \ |_____│

   きっとそうはならないな。
   おやすみー


スポンサーサイト

| 未分類 | 23:59 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://delfusa.blog65.fc2.com/tb.php/120-663de79c

TRACKBACK

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。