35

Shell32を機能させるには、C#アプリケーションに何を含める必要がありますか?

編集:

私のアプリケーションはshell32を認識できません。どのような参照またはライブラリを含める必要がありますか?私がやろうとしていることは:

Shell32.Shell shell = new Shell32.Shell(); 

エラーとして表示されるもの:

エラー1タイプまたは名前空間の名前'Shell32'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

4

9 に答える 9

59

フォルダShell32.dllからへの参照を追加して使用するだけです。Windows\System32

Shell32.Shell shell = new Shell32.Shell();
shell.MinimizeAll();
于 2011-04-18T20:35:48.300 に答える
56

多分これは助けることができます:

  1. プロジェクトを右クリック
  2. クリックAdd reference
  3. ダイアログ.COMのタブをクリックしますAdd reference
  4. 選択するMicrosoft Shell Controls and Automation
  5. クリックOK

あなたshell32は使用する準備ができています...

于 2013-09-19T12:32:24.530 に答える
29

このスレッドが古いことは知っていますが、私と同じ問題を抱えている人のためにこれを投稿します。上記のソリューションは、Windows8ではコンパイルされません

Shell32.Shell shell = new Shell32.Shell(); <=これはWindows8では機能しません

アプリをWindows8で実行する場合は、以下の回避策を使用してください。

using Shell32;

private Shell32.Folder GetShell32Folder(string folderPath)
{
    Type shellAppType = Type.GetTypeFromProgID("Shell.Application");
    Object shell = Activator.CreateInstance(shellAppType);
    return (Shell32.Folder)shellAppType.InvokeMember("NameSpace",
    System.Reflection.BindingFlags.InvokeMethod, null, shell, new object[] { folderPath });
}
于 2013-09-26T17:44:55.450 に答える
7
  1. ソリューションエクスプローラーでプロジェクトを右クリックします。
  2. ドロップダウンメニューから[参照の追加...]を選択します。
  3. 「参照」タブをクリックします。
  4. C:\ Windows\System32ディレクトリに移動します。
  5. 「shell32.dll」ファイルを選択します。「OK」ボタンを押します。

これで、Shell32.Shellを使用するための適切なリファレンスができました。

于 2013-02-22T19:29:35.697 に答える
4

プロジェクトに、COMライブラリMicrosoft Shell ControlsandAutomationへの参照を追加します。さらに、を使用するコードShell32.Shellがシングルスレッドアパートメントで実行されていることを確認します。たとえば、に[STAThread]属性を追加しますMain

于 2019-01-17T19:48:58.910 に答える
3

通話が認識されないように問題があると思われるので、次の一般的な記事を参照してください:http: //www.codeproject.com/KB/shell/csdoesshell1.aspx

それを超えて、あなたはあなたのために働いていないものの詳細を提供する必要があります。

于 2011-04-18T20:30:01.937 に答える
2

以下に示すクラスは、C#のshell32のメソッドのいくつかに役立つはずです。プロジェクトを右クリックして、参照ウィンドウに「MicrosoftShellコマンドと自動化」の参照を追加する必要があります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

    namespace MusicMuttPrototype
    {
        public class clsShellFileInfo
        {
            public Exception errorException;
            public enum FileDetailInfo
            {
                Name = 0,
                Year = 15,
                Size = 1,
                Track_Number = 19,
                Type = 2,
                Genre = 20,
                Date_Modified = 3,
                Duration = 27,
                Date_Created = 4,
                Bit_Rate = 28,
                Date_Accessed = 5,
                Protected = 23,
                Attributes = 6,
                Camera_Model = 24,
                Status = 7,
                Date_Picture_Taken = 25,
                Owner = 8,
                Dimensions = 26,
                Author = 9,
                Not_used = 27,
                Title = 10,
                Not_used_file = 28,
                Subject = 11,
                //Not_used = 29,
                Category = 12,
                Company = 30,
                Pages = 13,
                Description = 31,
                Comments = 14,
                File_Version = 32,
                Copyright = 15,
                Product_Name_Chapter = 33,
                //Scripting Quicktest Profess11ional Page 63 
                Artist = 16,
                Product_Version = 34,
                Album_Title = 17,
                Retrieves_the_info_tip_inf = -1
            }

            public string getFileDetails(string fileFolder, string filePath, FileDetailInfo infotype)
            {
                string strReturnval = "";
                try
                {
                    Shell32.Shell fileshell = new Shell32.Shell();
                    Shell32.Folder fileshellfolder = fileshell.NameSpace(fileFolder);
                    Shell32.FolderItem Item = fileshellfolder.ParseName(filePath);
                    strReturnval = fileshellfolder.GetDetailsOf(Item, (int)infotype);
                }
                catch (Exception ex)
                {

                    errorException = ex;
                }
                return strReturnval;
            }


        }
    }
于 2013-12-22T09:50:40.210 に答える
2

API呼び出しの完全なセットが必要ない場合は、COMインポートスタブクラスを作成することをお勧めします。DeskDriveを書いたMikeWardがどのようにそれをしたかを見てください。

http://mike-ward.net/2008/09/02/a-lean-method-for-invoking-com-in-c/ https://github.com/mike-ward/DeskDrive/blob/master/ src / DeskDrive / Shell32.cs

于 2016-10-19T21:57:11.230 に答える
1

実際のshell32.dllを参照することは非推奨です。.NETFramework4以降ではエラーが発生します。shell32.dllを使用するためだけに古い.NETFrameworkを使用すると、プログラムの機能が制限されます。Windows7以降および.NETFramework4以降のアプリケーションでは、代わりに常に.COMコンポーネントを使用する必要があります。プロジェクトを右クリックします。[参照の追加]をクリックします。[参照の追加]ダイアログの[.COM]タブをクリックします。Microso.ft Shell ControlsandAutomationを選択します。[OK]をクリックします

于 2018-07-09T16:18:26.873 に答える