|
1:
你这两个*, 那么这2级函数 直接 运行再窗口的堆栈上。
这样 定义的锁就不会释放。
在一个线程中LOCK没有意义。
应该在子线程中LOCK ABC吧。
2:
IFEX $[ '%&wp%'='%&DBT_DEVICEREMOVECOMPLETE%' | '%&wp%'='%&DBT_DEVICEARRIVAL%' | '%&wp%'='%&DBT_CONFIGCHANGED%' ]
单引号都去掉, 应该是数值比较。
ENVI^ EnviMode=1
ENVI &&WM_DEVICECHANGE=0x0219
ENVI &&DBT_DEVICEREMOVECOMPLETE=0x8004 //Device has been removed.
ENVI &&DBT_DEVICEARRIVAL=0x8000 //A device has been inserted and is now available.
ENVI &&DBT_CONFIGCHANGED=0x0018 //Current configuration has changed.
WIN1
_SUB WIN1,W287H254,盘符监视,
ENVI @this.MSG=%WM_DEVICECHANGE%::&&wp,&&lp, OnDriveChange %&wp% %&lp%
_END
_SUB OnDriveChange *
IFEX $[ %&wp%=%&DBT_DEVICEREMOVECOMPLETE% | %&wp%=%&DBT_DEVICEARRIVAL% | %&wp%=%&DBT_CONFIGCHANGED% ], ABC
_END
_SUB ABC *
THREAD MESS 1 @A*5000
LOCK --exist ABC,&&V
IFEX $%&V%<>0,EXIT _SUB
THREAD CALL MESS2
_END
_SUB MESS2
LOCK ABC
MESS 2 @A*5000
//WAIT 10000
_END
|
|