2

Win32_PrintJobなどのWin32 クラスWin32_Printerを C#.net で使用する必要があります。

c#.net アプリケーションで Win32 クラスを使用するためにインポートする必要がある名前空間を取得できませんか?

4

4 に答える 4

2

System.Managementこれらは WMI クラスであるため、名前空間を使用する必要があります。

プリンターに関するすばらしい記事は次のとおりです。C# と WMI を使用してプログラムでプリンターを管理する

于 2012-12-20T06:11:56.790 に答える
1

System.Management C# (または .Net) から WMI にアクセスするには、名前空間をインポートする必要があります。WMI Delphi Code Creatorまた、WMI を初めて使用する場合は、WMI にアクセスするための C# スニペットを作成するのに役立つのようなツールを試してください。

ツールによって作成されたこのサンプル コードを試してください。

using System;
using System.Collections.Generic;
using System.Management;
using System.Text;

namespace GetWMI_Info
{
    class Program
    {

        static void Main(string[] args)
        {
            try
            {
                string ComputerName = "localhost";
                ManagementScope Scope;                

                if (!ComputerName.Equals("localhost", StringComparison.OrdinalIgnoreCase)) 
                {
                    ConnectionOptions Conn = new ConnectionOptions();
                    Conn.Username  = "";
                    Conn.Password  = "";
                    Conn.Authority = "ntlmdomain:DOMAIN";
                    Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", ComputerName), Conn);
                }
                else
                    Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", ComputerName), null);

                Scope.Connect();
                ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_PrintJob");
                ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query);

                foreach (ManagementObject WmiObject in Searcher.Get())
                {
                    Console.WriteLine("{0,-35} {1,-40}","Document",WmiObject["Document"]);// String
                    Console.WriteLine("{0,-35} {1,-40}","Name",WmiObject["Name"]);// String

                }
            }
            catch (Exception e)
            {
                Console.WriteLine(String.Format("Exception {0} Trace {1}",e.Message,e.StackTrace));
            }
            Console.WriteLine("Press Enter to exit");
            Console.Read();
        }
    }
}
于 2012-12-20T15:28:43.257 に答える
0

そのようなオブジェクトが .NET に実装されていることは確かなので、それらのオブジェクトを使用する必要はありません。
winapi を直接操作する必要がある場合は、winapi 構造体 (クラスではなく構造体) に含まれるすべてのものを含む構造体を作成できます。

いくつかの注意事項:
すべてのメンバーの正確な順序とタイプを維持してください。
ハンドル (HWND など) を で表しSystem.IntPtrます。
構造体のサイズを渡す必要がある場合は、 を使用しますMarshal.SizeOf()。文字セットやその他の重要なプロパティを指定できる属性を
追加することもできます。 名前空間には、共通の winapi 構造体がいくつかあります。[StructLayout]
System.Runtime.InteropServices

于 2012-12-20T06:23:56.600 に答える