hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
小ワザ/デスクトップを表示 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

hsp3.png

デスクトップを表示

本家で話題が出たので試しに作ってたんですが、スマートな回答が出たのでここに掲載。

スクリプト

fileshowdesktop.hsp
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
;---------------------------------------------------------------------
;
;	タスクバーの[デスクトップを表示]を実現してみる
;
;---------------------------------------------------------------------
 
    ;hscallbk.dll が必要です
    #include "hscallbk.as"
 
    #uselib "user32.dll"
    #func GetWindowText "GetWindowTextA" int, int, int
    #func EnumWindows "EnumWindows" int, int
    #func IsIconic "IsIconic" int
    #func IsWindowVisible "IsWindowVisible" int
    #func CloseWindow "CloseWindow" int
 
    ;コールバック関数定義
    #uselib ""
    #func proto_EnumWindowsProc "" int, int
 
    sdim tmp, 129
 
    ;ウィンドウ列挙開始
    setcallbk pEnumWindowsProc, proto_EnumWindowsProc, *EnumWindowsProc
    mes "処理中..." : EnumWindows varptr(pEnumWindowsProc)
    mes "処理完了"
 
    stop
 
*EnumWindowsProc
    hWindow = callbkarg(0)
 
    ;名前のないウィンドウは無視する(高速化)
    GetWindowText hWindow, varptr(tmp), 128
    if tmp = "" : return 1
 
    ;ウィンドウの状態を調べる
    IsIconic hWindow : isicon = stat
    IsWindowVisible hWindow : isvisible = stat
 
    ;最小化されていない & 可視 & IMEではない = 最小化
    if (isicon = 0) & isvisible & (instr(tmp, 0, "IME") = -1) : CloseWindow hWindow
 
    return 1

スクリプト 2

EnumWindows? でなければ FindWindow? で。しかし・・・

naznyark? 2006-03-08 (水) 01:06:53
fileshowdesktop_2.hsp
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#uselib "user32.dll"
#func global GetWindowLong "GetWindowLongA" sptr, sptr
#func global FindWindowEx  "FindWindowExA"  sptr, sptr, sptr, sptr
#func global PostMessage   "PostMessageA"   sptr, sptr, sptr, sptr
 
#define WS_VISIBLE          0x10000000
#define WS_CAPTION          0x00C00000
#define WS_SYSMENU          0x00080000
#define WS_MINIMIZEBOX      0x00020000
 
#define WM_SYSCOMMAND                   0x0112
#define SC_MINIMIZE     0xF020
 
    hwndCA=0
 
*main
    repeat
        FindWindowEx 0 ,hwndCA, 0, 0
        hwndCA=stat
        if hwndCA=0 : break
 
        ;    親ウィンドウか?
        GetWindowLong hwndCA, -8
        if stat!=0 : continue
 
        ;    可視で最小化ボタンのあるウィンドウか?
        GetWindowLong hwndCA, -16
        if (stat & 0x10CA0000)!=0x10CA0000 : continue
 
        ;    自分自身は最小化しないとき
        ;if hwnd=hwndCA : continue
        PostMessage hwndCA, WM_SYSCOMMAND, SC_MINIMIZE, 0
    loop
    ;   システムに制御を返してメッセージを処理してもらう
    wait 0

スクリプト 3

現実は(?)こんなもの。

naznyark? 2006-03-08 (水) 01:06:53
+  スクリプト

コメント

  • EnumWindows?を使わない方法があったら是非教えて下さい。(懇願) -- QIG 2006-03-05 (日) 23:56:05
  • スクリプト 2は起動後すぐの処理だと動作しないときがあるな・・・(ウィンドウ初期化のタイミング?)。
    単独使用のときは頭に wait 入れたほうが良いかも。 -- naznyark? 2006-03-08 (水) 01:02:45

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
fileshowdesktop_3.hsp
352件 [詳細]
fileshowdesktop_2.hsp
293件 [詳細]
fileshowdesktop.hsp
328件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:47:50 (2436d)