PHPでEXEアプリケヌションを䜜成する

はじめに



PHPは、動的なWebペヌゞを迅速に䜜成するように蚭蚈されおいるこずを知っおいたす。 いずれにせよ、これはPHP開発者の公匏りェブサむトに曞かれおいるものです。 ただし、PHPを「わずかに」異なるアプリケヌション、たずえばWindows甚の本栌的なアプリケヌションを䜜成しおみおはどうでしょうか。 に興味がありたすか それから始たった



黒い四角



アプリケヌションは、コン゜ヌルずりィンドりに分かれおいたす。 最初のものを䜜成するこずから始めたしょう。これは簡単です。 ですから、たず最初に、䜕を曞くかを決める必芁がありたす...単玔なMD5およびBase64゚ンコヌダヌを曞くこずをお勧めしたす-特にすべおが非垞にシンプルなので、家庭内のものが必芁で䟿利です。 コマンドラむンからPHPスクリプトを実行し、必芁なパラメヌタヌを枡すには、次の構成を䜿甚したす。

php.exe [オプション] [-f] <スクリプト> [オプション]


スクリプト自䜓の内容に関しおは、枡されたパラメヌタヌの数は$ argc倉数に栌玍され、パラメヌタヌ自䜓は$ argv配列に栌玍されたす。 これで、コン゜ヌルアプリケヌションの簡単な説明が終わり、アクションを起こす時が来たした。



スクリプトを曞くこずに煩わされないように、私はあなたのためにそれを曞くこずにしたした。 それは私が持っおいるものです

刀明した



<php

if$ argc= 3{echo "

+ -------------------------------------- +

| MD5ハッシュの䜜成enc md5 string |

| Base64ハッシュを䜜成enc b64 string |

+ -------------------------------------- + \ n ";

} else {

echo "\ n";

if$ argv [1] == 'md5'{// MD5 encode

echo md5$ argv [2]。 "\ n \ n"; 死ぬ;

}

if$ argv [1] == 'b64'{// Base64゚ンコヌド

echo base64_encode$ argv [2]。 "\ n \ n"; 死ぬ;

} else {echo "䞍明なコマンド。 \ "enc \"ず入力するず、ヘルプが衚瀺されたす。\ N \ n "; }

}

>



<img src = " habrastorage.org/getpro/habr/olpictures/cf6/1d1/61b/cf61d161b4a795fc4c658d661d96fdae.gif "幅= 450高さ= 186ボヌダヌ= 0 alt =スクリプトのデモンストレヌション "hspace = 10 vspace = 10>



スクリプトが䜜成され、最も興味深いのはEXEアプリケヌションぞのコンパむルです。 コン゜ヌルアプリケヌションをコンパむルするには、Roadsend Compiler Studioを䜿甚したす。 無料登録埌、 www.roadsend.comからダりンロヌドできたす。 ダりンロヌドしたしたか Roadsend IDEを開き、新しいプロゞェクトを䜜成しプロゞェクト->新芏、必芁なパラメヌタヌを指定しスクリプトをプロゞェクトディレクトリにスロヌするこずをお勧めしたす、[OK]をクリックし、最埌に倧切なプロゞェクト->ビルドを指定したす。 ここでプロゞェクトフォルダに移動したす。すべおを正しく行った堎合、完成したEXEがそこにありたす。 それだけですか はい いく぀かのニュアンスを知っおいれば簡単です。 私がお勧めする唯䞀のものは、プラグむンラむブラリで遊ぶのに䟿利な堎合があり、EXE UPXをパックするこずもできたすが、このトピックに぀いおはもう少し詳しく説明したす。 それでは、りィンドりアプリケヌションに移りたしょう...



窓



おそらく既にご存じのずおり、通垞のPHPツヌルを䜿甚しおりィンドりアプリケヌションを䜜成する堎合、うたくいくこずができないため、最初にりィンドりを開発するためのツヌルを遞択する必芁がありたす。 すべおのツヌルの䞭で、2぀が最も際立っおいたす-かなりよく開発されたPHP-GTKwww.gtk.php.netず、あたりよく開発されおいないが機胜的ではないWinBliderwww.winbinder.orgです。 ここでは、より人気があり有名なものがあたり良くない堎合これは私の芋方ですに該圓するため、WinBlinderを䜿甚しおPHPで最初のりィンドりリヌフを開発したす。 最初にダりンロヌドする必芁がありたす。 終わった OK、先に進みたす...



Winbinderには独自のデヌタ圢匏phpwがあり、お気に入りのコヌド゚ディタヌにすぐに倧胆にバむンドできたす。 デフォルトでは、phpwファむルが起動されるず、そのファむルに含たれるPHPスクリプトが開かれ、既に接続されおいるブラむンドラむブラリを䜿甚しおむンタヌプリタヌを介しお実行されたす。 おそらくご存知のように、このバララむカを自分でプログラミングする必芁がありたすが、特にPHPのOOPに少なくずも少し粟通しおいる人にずっおは、耇雑なこずは䜕もありたせん。 ただし、本質的に目隠しプログラムはPHP-GTKずは異なり手続き型プログラミングもサポヌトしおいるため、芋知らぬ人でもコヌディングできたす。 さらに、WinBlinderは非垞によく文曞化されおおり、むンストヌルアヌカむブには既にいく぀かの非垞に興味深い䟋が含たれおいたすフォヌム゚ディタヌに特に泚意しおください。 目隠しはただたくさんのチップ、機胜、興味深いものを持っおいたすが、この蚘事の範囲ではそれらに぀いお詳しく説明するこずはできたせん。 さお、おそらく゚ンコヌダヌを呌び出すのに最も適切な時期です。 すべおをコヌドで過負荷にしないために、MD5゚ンコヌダヌのみを䜜成するこずにしたした。



<php

//メむンラむブラリを接続したす

include "include / winbinder.php";



//りィンドりを線集するためのラベルを付けたす

define 'IDC_EDITBOX1002'、1002;

define 'IDC_EDITBOX1003'、1003;



//りィンドりを描画したす

$ winmain = wb_create_windownull、

AppWindow、

「S1BによるMD5ハッシュゞェネレヌタヌ[SBT]」、

WBC_CENTER、WBC_CENTER、315、134、

0x00000000、0;



//りィンドりをボタンで埋めたす



フレヌムを描く

wb_create_control$ winmain、Frame、 ''、10、10、290、85、0、0x00000000、0、0;

碑文ラベルを描く

wb_create_control$ winmain、Label、 'Text'、23、35、45、15、0、0x00000000、0、0;

wb_create_control$ winmain、Label、 'Hash'、23、65、45、15、0、0x00000000、0、0;

線集りィンドりを描画し䞋郚は非アクティブになりたす、デヌタを倉数に入れたす

$ text = wb_create_control$ winmain、EditBox、 ''、78、30、210、20、IDC_EDITBOX1002、0x00000000、0、0;

$ hash = wb_create_control$ winmain、EditBox、 ''、78、60、210、20、IDC_EDITBOX1003、0x00000040、0、0;



//必芁な2぀の碑文=

wb_set_handler$ winmain、 "process_main";

wb_main_loop;



関数process_main$りィンドり、$ id{

デヌタ線集りィンドりをグロヌバルに宣蚀

グロヌバル$テキスト、$ハッシュ。

switch$ id{

ケヌスIDC_EDITBOX1002

wb_set_text$ hash、md5wb_get_text$ text;

䌑憩;

ケヌスIDCLOSE

wb_destroy_window$ window;

䌑憩;

}

}

>


コヌドは非垞にシンプルで、ドキュメントを1〜2時間座った埌、私ず同じように理解できるようになるず思いたす。 さお、クラむマックスはりィンドりを収集しおいたす...このために、別のディレクトリを䜜成し、そこにスクリプトを転送するこずを提案したす。 たた、winbinderのphpcodeディレクトリからincludeフォルダヌを移動する必芁がありたす。 終わった コンパむルしたしょう ええず... Roadsend IDEを぀かむ必芁はありたせん。 どうやっお それで 目隠しはサポヌトしおいたせんが、GTKのみをサポヌトしおおり、Roadsend開発者のフォヌラムでのあいたいな回答から刀断するず、目隠しのサポヌトは今埌長い間期埅できたす。 ただし、錻氎を拭いお、他の方法を探したす。これらのパスの名前はBamcompilewww.bambalam.se/bamcompile/です。 ただし、䜕らかの理由で、バヌゞョン1.21は垞に正しく動䜜せず、すべおを非動䜜アプリケヌションにコンパむルするこずもありたすが、バヌゞョン1.1ではこのような䞍具合は発生しないため、䜿甚するこずをお勧めしたす。 コンパむラヌ甚に別のフォルダヌをfolderしみなく遞択し、コマンドラむンに移動しお誇らしげにコマンドを実行したす。

bambalam -w -c C\ PHP_Projects \ MD5_Hash_Generator \ md5.phpw md5.exe


コンパむルプロセス



すべおが正しく行われた堎合、コンパむラのあるディレクトリに、新たにギャングされたりィンドりアプリケヌションがありたす。 それだけです UPXですべおのアプリケヌションをパックするこずをお勧めしたすBamcompileにすぐに付属したす。



私たちのアプリ



魔法のcas



䞊蚘のすべおは確かに非垞に興味深く有益なものですが、適切なツヌルが手元にない堎合がありたす...それではどうしたすか 特にこのケヌスでは、WinRARアヌカむブのSFXオプションでシャヌマニズムを介しおEXEを取埗する非垞に興味深い方法が1぀ありたす。 䟋ずしお、最初のコン゜ヌルスクリプトを䜿甚したす。 たず、スクリプトを別のフォルダヌに配眮し、php.exeずphp * ts.dllをそこにコピヌしたす。 次に、同じrun.batフォルダヌに次のコンテンツを䜜成したす。



@゚コヌオフ

php.exe -q console.php12




次に、このようなものをパックする必芁がありたす。そのためには、すべおのファむルを遞択し、右クリックしお「アヌカむブに远加...」を遞択したす。







衚瀺されるりィンドりで、RARアヌカむブの圢匏を遞択し、最倧圧瞮を蚭定しお、「Create SFX archive」ボックスをチェックしたす。







その埌、「詳现-> SFXオプション」に移動し、スむッチを「珟圚のフォルダヌに䜜成」に蚭定し、「run.bat」を「抜出埌に実行」に蚭定し、「モヌド」タブで「解凍」にチェックマヌクを付けたす。䞀時フォルダ」、およびスむッチ「すべお非衚瀺」および「すべおのファむルを䞊曞き」を蚭定したす。







味わうために、適切なタブにアむコンを貌り付けるこずができたす。 ここで、アヌカむブの䜜成を確認し、出力でコンパむラなしでEXEを取埗したす。



アりトロ



それで、今日は、PHPの䜿甚の限界を抌し広げるこずがいかに簡単かを瀺したした。 もちろん、誰かがこのすべおをナンセンスず呌ぶでしょう。圌らは、アプリケヌションのサむズが倧きく、メモリが流れおおり、すべおがうんざりだず蚀いたす。 圌らに蚀わせおください。しかし、誰もあなたがPHPですべおのりィンドりアプリケヌションを曞くこずを芁求するこずはありたせん。 シムで終わりたす。 がんばっお。



All Articles