【C++ Builder CE】インターネットから DL したファイルを開こうとすると出る警告を消す

”翻訳”しただけですが…..。

DiscordのDelphi Users (Japan)に書かれたDEKOさん(この方もfameさんです)の以下のQiitaの記事

に触発されて、”翻訳”してみました。もちろん手動です。要するに、

このダイアログがうざいので、出ないようにしたいというわけですね。ソース2の方を”翻訳”しました。前に書きましたけど、Delphiのソースが読めると色々と吉です。ソース2の方の原典は上記サイトを当たっていただいて、翻訳後のプログラムだけ載せます。フォームは、

TMemoだけ。Unit1.hは、不要かもしれませんが、

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE で管理されるコンポーネント
	TMemo *Memo1;
private:	// ユーザー宣言
public:		// ユーザー宣言
	__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Unit1.cppは、

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <IOUtils.hpp>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
String ZI_FILENAME = "Zone.Identifier";

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{

	String Path = "./";

	String SearchPattern = "*.*";

	TSearchOption Option = TSearchOption::soTopDirectoryOnly;

	TStringDynArray files = TDirectory::GetFiles(Path, SearchPattern, Option);

	for (int i = 0; i < files.Length; ++i){
		Memo1->Lines->Add(files[i]);
		String FSFileName = files[i] + ":" + ZI_FILENAME;
		if( TFile::Exists(FSFileName) ){
			DeleteFile(FSFileName);
			Memo1->Lines->Add("stripped " + FSFileName);
		}

	}
}

これだけです。一応処理したファイルを表示します。実行プログラムがあるディレクトリをスキャンして、すべてのファイルを検分して、”Zone.Identifier”を持っているかをチェックし、持っていればそのパートを削ります。実行結果は、

のようになり。zipアーカイブからIdentifierが取り除かれたことがわかります。これを解凍してバイナリを実行しても”うざいダイアログ”は出ません。DEKOさんによるとダウンロードリンクからcurlでファイルを取ってくるとIdentifierは付加されないということなので、試して見ましたがその通りでした。余計(?)なことをやっているのはEdgeやらChrome君たちブラウザだったということでした。本サイトの”らじる☆らじる聞き逃しサーチアプリ”のダウンロードリンクのurlは、

https://ghost.mydns.jp/wp/download/2654/?tmstv=1778134251

なので、

curl -o somewhat.zip https://ghost.mydns.jp/wp/download/2654/?tmstv=1778134251

とかで吉ですね。

コメント