Как да декларирам QueryFullProcessImageName() API C# (Windows 7 x64)

Трябва да го използвам, но в pinvoke не мога да получа декларацията на този API.

И така... има ли начин да го декларирам?.

И ако имате пример за използване, ще бъде перфектно, защото за първи път ще използвам този api.


person Krähne    schedule 30.05.2011    source източник
comment
Не използвайте това, WMI може да ви осигури и тази информация с много по-малко болка и без зависимост от Vista+. Използвайте WMI Code Creator, той ви позволява да експериментирате и генерира C# кода, от който се нуждаете. microsoft.com/downloads/en/   -  person Hans Passant    schedule 31.05.2011


Отговори (1)


using System;
using System.Runtime.InteropServices;
using System.Text;

//...

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool QueryFullProcessImageName(IntPtr hProcess, uint dwFlags,
    [Out, MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpExeName,
    ref uint lpdwSize);

За употребата вижте документацията.

person user541686    schedule 30.05.2011
comment
Благодаря!. Ще го тествам, но... въпреки това искам да знам нещо... Как го направихте?... има ли ръководство или нещо подобно? - person Krähne; 31.05.2011
comment
@Krahne: Научих C. :) Предлагам ви да направите същото, не е толкова трудно, но когато го направите, виждате какво се случва. :) - person user541686; 31.05.2011
comment
Колко време инвестирахте, за да научите C? .. Знаете ли за някаква конкретна книга?, ако знаете за такава на испански, наистина ще я оценя, защото не говоря много английски. Благодаря за всичко, все още тествам API. - person Krähne; 31.05.2011
comment
В моя LINQPad частта MarshalAs(UnmanagedType.LPTStr) причинява странни китайски букви в резултата, премахването на атрибута дава правилен път с латински букви. Някаква идея защо възниква тази грешка? LINQPad е 32-битов, работи под 64-битов Win7, но това не би трябвало да има значение. - person Roland Pihlakas; 27.07.2014
comment
@RolandPihlakas: Хм, забравих, ако имате нужда от CharSet = CharSet.Auto, опитайте да го поставите в DllImport? - person user541686; 28.07.2014
comment
@Mehrdad Благодаря, да, CharSet = CharSet.Auto помогна. - person Roland Pihlakas; 28.07.2014