web-dev-qa-db-de.com

Wie verwende ich [DllImport ("")] in C #?

Ich habe viele Fragen dazu gefunden, aber niemand erklärt, wie ich das nutzen kann.

Ich habe das:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.FSharp.Linq.RuntimeHelpers;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.IO;

public class WindowHandling
{
    public void ActivateTargetApplication(string processName, List<string> barcodesList)
    {
        [DllImport("User32.dll")]
        public static extern int SetForegroundWindow(IntPtr point);
        Process p = Process.Start("notepad++.exe");
        p.WaitForInputIdle();
        IntPtr h = p.MainWindowHandle;
        SetForegroundWindow(h);
        SendKeys.SendWait("k");
        IntPtr processFoundWindow = p.MainWindowHandle;
    }
}

Kann mir jemand helfen, zu verstehen, warum ich in der Zeile DllImport und in der Zeile public static Einen Fehler erhalte?

Hat jemand eine Idee, was kann ich tun? Vielen Dank.

35
ThomasFey

Sie können keine extern lokale Methode innerhalb einer Methode oder einer anderen Methode mit einem Attribut deklarieren. Verschieben Sie Ihren DLL Import in die Klasse:

using System.Runtime.InteropServices;


public class WindowHandling
{
    [DllImport("User32.dll")]
    public static extern int SetForegroundWindow(IntPtr point);

    public void ActivateTargetApplication(string processName, List<string> barcodesList)
    {
        Process p = Process.Start("notepad++.exe");
        p.WaitForInputIdle();
        IntPtr h = p.MainWindowHandle;
        SetForegroundWindow(h);
        SendKeys.SendWait("k");
        IntPtr processFoundWindow = p.MainWindowHandle;
    }
}
66
vcsjones