プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

[HSP]クリーニングのサンプル

2017年09月14日 17時16分00秒 | HSP講座

スクリプト言語の HSP については、公式ホームページの「HSPTV!」をどうぞ。(戻る)


ここには、ちょっとしたツールを作成するときに活用できるクリーニング命令群を紹介します。

  1. ゴミ箱を空する (SHEmptyRecycleBin)
  2. クリップボードのクリア (apiClipClear)
  3. ワーキングセットのクリア (WorkingSetClear)
  4. 最近使ったファイルのクリア (SHAddToRecentDocs)

上記のカッコ内で apiClipClear、WorkingSetClear 命令はユーザー定義命令ですが、
SHEmptyRecycleBin 命令、SHAddToRecentDocs 命令の2つは Win32API 関数です。

詳しい技術資料などはC言語カテゴリの下記を参照して下さい。
ここで紹介する命令は HSP で使えるようにC言語からHSP用に新たに書き下ろした命令群です。

技術資料

関連カテゴリ

クリーニング命令群の使い方

// ゴミ箱を空する
SHEmptyRecycleBin NULL,NULL,(SHERB_NOCONFIRMATION|SHERB_NOPROGRESSUI|SHERB_NOSOUND)

// クリップボードのクリア apiClipClear
// ワーキングセットのクリア WorkingSetClear
// 最近使ったファイルのクリア SHAddToRecentDocs SHARD_PATH,NULL

動作確認のサンプル

//------------------------------------------------------------------------------
// クリーニング命令のサンプル by 科学太郎
//==============================================================================
// @URL(http://msdn.microsoft.com/en-us/library/bb762160.aspx)→「SHEmptyRecycleBin」
// @URL(http://msdn.microsoft.com/en-us/library/bb762105.aspx)→「SHAddToRecentDocs」
//------------------------------------------------------------------------------
#include "User32.as"
#include "Shell32.as"
#include "Kernel32.as"

//--------------------------------------
// Win32API関数の呼び出し定義
//--------------------------------------
#uselib "Psapi.dll"
#func global EnumProcesses              "EnumProcesses"         sptr,sptr,sptr
#func global EmptyWorkingSet            "EmptyWorkingSet"       sptr

//--------------------------------------
// 記号定数(API定数)
//--------------------------------------
#const global NULL                      0
#const global SHERB_NOCONFIRMATION      $00000001
#const global SHERB_NOPROGRESSUI        $00000002
#const global SHERB_NOSOUND             $00000004
#const global SHARD_PATH                $00000002
#
#const global PROCESS_SET_QUOTA         $00000100
#const global PROCESS_QUERY_INFORMATION $00000400

//--------------------------------------
// メイン部
//--------------------------------------
*Main
    screen 0,640,480,SCREEN_NORMAL|SCREEN_FIXEDSIZE
    syscolor 15:boxf:color:title "クリーニング命令のサンプル by 科学太郎"
    ;配置
    objsize 150,25
    button gosub "ゴミ箱を空にする",                *PushRecycleBin
    button gosub "クリップボードのクリア",          *PushClipBoard
    button gosub "ワーキングセットのクリア",        *PushWorkingSet
    button gosub "最近使ったファイルのクリア",      *PushRecentDocs
    stop
//--------------------------------------
// ゴミ箱を空する
//--------------------------------------
*PushRecycleBin
    SHEmptyRecycleBin NULL,NULL,(SHERB_NOCONFIRMATION|SHERB_NOPROGRESSUI|SHERB_NOSOUND)
    dialog "ゴミ箱を空にしました。",0,"確認"
    return
//--------------------------------------
// クリップボードのクリア
//--------------------------------------
*PushClipBoard
    apiClipClear
    dialog "クリップボードをクリアしました。",0,"確認"
    return
//--------------------------------------
// ワーキングセットのクリア
//--------------------------------------
*PushWorkingSet
    WorkingSetClear
    dialog "ワーキングセットをクリアしました。",0,"確認"
    return
//--------------------------------------
// 最近使ったファイルのクリア
//--------------------------------------
*PushRecentDocs
    SHAddToRecentDocs SHARD_PATH,NULL
    dialog "最近使ったファイルをクリアしました。",0,"確認"
    return
//--------------------------------------
// クリップボードのデータをクリア
//--------------------------------------
#deffunc apiClipClear
    OpenClipboard hWnd
    if(stat){
        EmptyClipboard
        CloseClipboard
    }
    return
//--------------------------------------
// ワーキングセットのクリア
//--------------------------------------
#deffunc WorkingSetClear\
    local nSize,local hProcess,local idProcess
    dim   nSize:dim   hProcess:dim   idProcess,1024
    
    EnumProcesses varptr(idProcess),length(idProcess)*4,varptr(nSize)
    if(stat){
        repeat(nSize/4)
            OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_SET_QUOTA),0,idProcess(cnt):hProcess=stat
            if(stat){
                EmptyWorkingSet hProcess
                CloseHandle     hProcess
            }
        loop
    }
    return
//------------------------------------------------------------------------------
// End of sample185b.hsp
//------------------------------------------------------------------------------

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« [HSP]シャットダウンのサン... | トップ | [HSP]CPU使用率のサンプル(1) »
最新の画像もっと見る

コメントを投稿

HSP講座」カテゴリの最新記事