S
sowen
Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个component,调用SHChangeNotifyRegister来监视硬盘文件等的变化<br>其中有一个属性path来设置目录,然后注册监视。<br>单独调用的时候非常正常,没有异常。<br><br>可是当我这样调用的时候却有问题了<br><br> shn:Array of TShellNotification;<br><br>begin<br> total:=Drivers.Count;<br> //Drivers保存了所有驱动器 <br><br> If total>0 then begin<br> SetLength(shn,total);<br> for i:=0 to total-1 do begin<br> shn:=TShellNotification.Create(Self);<br> shn.WatchSubTree :=true;<br> shn.Path :=lowercase(Drivers.Strings);<br><br> shn.WatchEvents :=[*];<br><br> shn.Active :=true;<br>//通过watch就在这行出错<br>end;<br><br>而Actvie只是触发注册,而在那个组件里出错在<br><br> SHILCreatefromPath( PChar(fPath), Addr(Pidl), Attributes); <br> NotifyRecord^.pidlPath := Pidl; //出错在这里!<br> NotifyRecord^.bWatchSubtree := fWatch; <br><br>非常奇怪的事情就是,如果这行<br><br> shn.Path :=lowercase(Drivers.Strings);<br><br>改成 <br> shn.Path :='c:/';<br><br>就正常,没有问题!<br><br>其实值都是一摸一样的!<br><br>这是什么道理????<br><br>请高手指教<br><br>我主要是希望能够监视所有驱动器而不只是某一个目录。<br><br>谢谢<br><br>