C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ウインドウを更新する方法


(過去ログ 149 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■87100 / inTopicNo.1)  ウインドウを更新する方法
  
□投稿者/ がむんだ (1回)-(2018/04/11(Wed) 19:33:04)

分類:[.NET 全般] 

VB.NETを使って
ファイルを移動させたり、生成したりするプログラムを作成したのですが
Windows10を使っていますがファイルを生成した直後
生成したファイルはエクスプローラーのウインドウのファイルリストの最後に表れます。
ここで、F5キーを押さないとファイル名でソートされません、

それでVBを使って、ファイルを生成後に自動で
ウインドウを更新したいのですが
どのようにすれば良いですか?




引用返信 編集キー/
■87103 / inTopicNo.2)  Re[1]: ウインドウを更新する方法
□投稿者/ 魔界の仮面弁士 (1639回)-(2018/04/11(Wed) 22:12:40)
No87100 (がむんだ さん) に返信
> それでVBを使って、ファイルを生成後に自動で
> ウインドウを更新したいのですが
> どのようにすれば良いですか?

これでどうでしょう。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 For Each exp In GetObject("new:9BA05972-F6A8-11CF-A442-00A0C90A8F39")
  If CStr(exp.FullName).ToLower() Like "*\explorer.exe" Then
   If MsgBox("更新しますか?" & vbCrLf & exp.LocationName, vbYesNo Or vbQuestion) = vbYes Then
    exp.Refresh2(RefreshConstants.Normal)
   End If
  End If
 Next
End Sub

Enum RefreshConstants As Short
 Normal = 0
 IfExpired = 1
 Completely = 3
End Enum
引用返信 編集キー/
■87123 / inTopicNo.3)  Re[2]: ウインドウを更新する方法
□投稿者/ がむんだ (2回)-(2018/04/13(Fri) 14:26:25)
ありがとうございます。

試してみたのですが

エラー BC32023 式の型は 'Object' で、コレクション型ではありません。

エラー BC30574 Option Strict On では、遅延バインディングを使用できません。


というエラーが出ます。
どのように修正すれば良いでしょうか?

引用返信 編集キー/
■87127 / inTopicNo.4)  Re[3]: ウインドウを更新する方法
□投稿者/ 魔界の仮面弁士 (1641回)-(2018/04/13(Fri) 16:13:48)
No87123 (がむんだ さん) に返信
> どのように修正すれば良いでしょうか?
手っ取り早いのは、そのファイルの先頭に
Option Strict Off
と記述することですね。

(Option Strict On のままにしたい場合は、参照設定の追加とコードの手直しが必要)
引用返信 編集キー/
■87128 / inTopicNo.5)  Re[4]: ウインドウを更新する方法
□投稿者/ がむんだ (3回)-(2018/04/13(Fri) 16:51:04)
Option Strict On のままにしたいのですが
どのように修正すればよろしいでしょうか?
よろしくお願いいたします。
 
引用返信 編集キー/
■87135 / inTopicNo.6)  Re[5]: ウインドウを更新する方法
□投稿者/ 魔界の仮面弁士 (1642回)-(2018/04/14(Sat) 02:35:06)
No87128 (がむんだ さん) に返信
> Option Strict On のままにしたいのですが

その前に、「Option Strict Off にすれば動いたのかどうか」や
「提示したコードで目的を果たせるのか否か」をフィードバックしてくださいませ。

提示のコードでは問題が解決できないようであれば、
そのまま修正しても、あまり意味が無いわけで…。


> どのように修正すればよろしいでしょうか?
追加の参照設定を必要とする方法と、参照設定を追加せずに実装する方法とがあります。

とりあえず後者の場合は、 No35068 のようにすることで、Option Strict On のまま
9BA05972-F6A8-11CF-A442-00A0C90A8F39 のオブジェクトすなわち ShellWindows を列挙させられます。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974.aspx

この場合はメソッドの呼び出しも CallByName に置き換えれば OK 。


参照設定する場合は、[Microsoft Internet Controls] を参照に加えたうえで、ループを
 For Each exp As SHDocVw.InternetExplorer In New SHDocVw.ShellWindows()
に変更する流れになります。Refresh2 メソッドの引数が ByRef Object の場合は
列挙型を Object 型変数に入れてから渡すように改修してください。


ただし、 No87103 にしても今回のコードにしても、
COM オブジェクトの解放処理を省いたものとなっています。
解放もきちんと行いたい場合には、ShellWindows を始めとした各種 COM オブジェクトを
ReleaseComObject するようにしたおいた方が良いでしょう。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=54129&KLOG=91
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -