ミニマクロ集 for WZ FILER(海賊版)

Sakakibara, Y さんによる、WZ FILER(海賊版)のユーザマクロに登録して使う、ミニマクロ集です。
短いので、直接ここに記します。

全部くっつけて、.TLL 形式にしたほうがよいかもね。お好きにどうぞ。


ファイラーを再起動

残念ながらこのマクロ、WZ FILER(海賊版)の途中のバージョンから、動かなくなってしまいました。
このマクロの作り方がよろしくないためです。
うっかり動かしてしまって、WZ FILER(海賊版)を起動できなくなった時は、WZフォルダのfiler2.cfgにあるsbMacro:で定義しているこのマクロをエディタで削除してください。

/*
    ファイラーを終了し、WZ FILER(海賊版)を起動します。
    ユーザマクロのリコンパイルを反映させるのに便利。
*/
#include <windows.h>

void main(void)
{
    SendMessage(sh->hwndFiler, WM_CLOSE, 0,0);
    wzexec("/f_apfiler.txe");
}

DOSプロンプトを起動

/*
    WZファイラー(海賊版)からDOSプロンプトを開く
    NTでは、command.com の代わりに cmd.exe にすればよい。
*/
#include <windows.h>

extern "_apfiler" {
    int pathGetSourcelist(mchar szpath[CCHPATHNAME]);
}

void main(void)
{
    mchar szpath[CCHPATHNAME];
    mchar szcmdline[CCHPATHNAME + CCHWORD];
    pathGetSourcelist(szpath);
    sprintf(szcmdline, "command.com /k cd \"%s\"", szpath);
    exec(szcmdline);
}

マイコンピュータを起動

/*
    マイコンピュータを起動 from WZ Filer 海賊版
    パラメータに /e をつければ、マイコンピュータの代わりにエクスプローラが起動されます。
*/
#include <windows.h>

extern "_apfiler" {
    int txGetSourcelist(TX* text,BOOL fSetLong);
    int txGetTargetlist(TX* text,BOOL fSetLong);
    int pathGetSourcelist(mchar szpath[CCHPATHNAME]);
    int pathGetTargetlist(mchar szpath[CCHPATHNAME]);
}

void main(TX* text)
{
    mchar szsrcpath[CCHPATHNAME];
    pathGetSourcelist(szsrcpath);
    exec("EXPLORER.EXE " + szsrcpath);
}

ディスクフォーマット

/*
    ディスクフォーマットのダイアログ表示 from WZ Filer 海賊版
    SHFormatDrive の2番目のパラメータは、0:Aドライブ、1:B、2:C ...です。
*/

extern "shell32.dll" {
    DWORD WINAPI SHFormatDrive( HWND hwnd, UINT drive, UINT fmtID, UINT options );
}

#define SHFMT_ID_DEFAULT 0xFFFF

#define SHFMT_OPT_QUICK   0x0000 // クイック フォーマット
#define SHFMT_OPT_FULL    0x0001 // 通常のフォーマット
#define SHFMT_OPT_SYSONLY 0x0002 // 起動専用

#define SHFMT_NOFORMAT 0xFFFFFFFDL // 指定されたドライブはフォーマット不能である
#define SHFMT_CANCEL   0xFFFFFFFEL // フォーマットはキャンセルされた
#define SHFMT_ERROR    0xFFFFFFFFL // 上記以外のエラー


int main(void)
{
    SHFormatDrive(sh->hwndFiler, 0, SHFMT_ID_DEFAULT, SHFMT_OPT_QUICK);
    return 0;
}

ディスクコピー

/*
    ディスクコピーのダイアログを表示します。
*/
#include <windows.h>

void main(void)
{
    WinExec("RunDll32.exe DiskCopy.dll,DiskCopyRunDll 0",SW_SHOW);
    return;
}

Windows の終了

#include <windows.h>

int num = 0;

void main(void)
{
    HDIALOG hd = dialog("Windows の終了");
    
    dialogCaption(hd, "次の方法で終了しますか?");
    dialogControlRadioV(hd);
    dialogChoiceRadio(hd, &num,
            "再起動する(&R)",
            "電源を切れる状態にする(&S)",
            NULL);
    if (dialogOpen(hd) == IDOK) {
        switch (num) {
            case 0:
                ExitWindowsEx(EWX_REBOOT ,NULL);
                break;
            case 1:
                ExitWindowsEx(EWX_SHUTDOWN ,NULL);
                break;
        }
    }
}

トップページへ