HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0318
OBASANWindowsアプリケーション終了判断4解決


OBASAN

リンク

2008/3/18(Tue) 19:12:56|NO.14411

色々と聞いてすみません。


//DILECTORYNAME…復号化したファイルが入るフォルダ名 //DISPOSITION(BOXCNT)…復号化したファイル名 //EXTENSION…複合化したファイルに適した拡張子 FULLDILECTORY = "C:\\" + DILECTORYNAME + "\\" + DISPOSITION(BOXCNT) + EXTENSION exec FULLDILECTORY,16

例えばDILECTORYNAME=xlsf、DISPOSITION(BOXCNT)=2006資料、EXTENSION=.xlsとすると起動する
ファイルは「C:\xlsf\2006資料.xls」となり、モード16ですので関連付けされたExcelで起動さ
れます。

今回の質問は、これで開いたExcelが閉じられた瞬間に下記のプログラムで関連したフォルダ丸々
削除したいのですが、Excelが閉じられたことを検知するにはどうしたらよいでしょうか?


#module #uselib "shell32" #func global SHFileOperation "SHFileOperationA" int #deffunc alldelete str _dir sdim PLOSN, 260 : PLOSN = _dir dim DELPLOS, 8 DELPLOS.0 = hWnd DELPLOS.1 = 0x0003 DELPLOS.2 = varptr( PLOSN ) DELPLOS.3 = 0 DELPLOS.4 = 0x0114 SHFileOperation varptr( DELPLOS ) return stat #global alldelete FULLDILECTORY stop

以前はexec命令にもタスク実行待ちモードがあったようですが…ginfo_act命令ですとExcel起動中
でもHSPプログラムをアクティブにすることは出来ますし、aplsel命令ではHSPプログラムにしかき
かないので、何か良い方法がございましたら教えてください。



この記事に返信する


たこ

リンク

2008/3/18(Tue) 19:43:59|NO.14412

FindWindow でExcelのウィンドウハンドルを取得して
IsWindow で存在するかを調べる
てのはどうですか?



ANTARES

リンク

2008/3/19(Wed) 01:30:43|NO.14419

>Excelが閉じられたことを検知するにはどうしたらよいでしょうか?
 GENERIC_READ | GENERIC_WRITE,FILE_SHARE_WRITEでCreateFileして
戻り値がINVALID_HANDLE_VALUEのとき、GetLastErrorの戻り値が
ERROR_SHARING_VIOLATIONなら、ファイルが使用中のようです。
CreateFileの戻り値がINVALID_HANDLE_VALUEでなければ
閉じられたということでしょう。

#define GENERIC_READ 0x80000000
#define GENERIC_WRITE 0x40000000
#define FILE_SHARE_WRITE 2
#define INVALID_HANDLE_VALUE (HANDLE)(0xffffffff)
#define ERROR_SHARING_VIOLATION 32



inovia

リンク

2008/3/19(Wed) 02:11:00|NO.14421

>aplsel命令ではHSPプログラムにしかきかないので…
もう解決しているようですが、aplsel命令は大賞がHSPじゃなくてもOKだった気がします。



OBASAN

リンク

2008/3/19(Wed) 07:53:51|NO.14424

皆さん、ありがとうございました!ハンドル取得でいけました。



ONION software Copyright 1997-2023(c) All rights reserved.