Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
251 / 163 / 14
Регистрация: 10.03.2012
Сообщений: 544
1
.NET 4.x

Как правильно объявить функцию WINAPI

10.03.2012, 23:09. Показов 1505. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Я пытаюсь объявить в коде на языке C# функцию WINAPI ExtractIcon следующим образом:

C#
1
2
[DllImport("shell32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr ExtractIcon(IntPtr HInst, string FName, long IcoIdx);
Компилируется, запускается нормально, но при вызове функции выдает ошибку:

PInvokeStackImbalance
A call to PInvoke function 'FTypeX!FTypeX.frmChange::ExtractIcon' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.


Подскажите, пожалуйста, как правильно объявить эту функцию? (Мне кажется, возникающая ошибка связана именно с неправильным объявлением.) Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2012, 23:09
Ответы с готовыми решениями:

список как правильно объявить?
как правильно объявить список? Пишу так List lstpsklt = new List(); пишу как тут...

Как правильно объявить/установить счетчик
Вообщем задача следующая: у меня в коде проходит 4 итерации на сравнение картинок, а потом идет...

Как правильно объявить дословную строку?
Regex opera = new Regex ("\\s*(+|-|*|/("); Он ругается, я помню что перед знаками нужно было...

Как правильно объявить классы?
Всем привет. Помогите правильно объявить и написать классы. Суть в следующем. Есть объект Client,...

1
Эксперт С++
3701 / 2835 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 22
10.03.2012, 23:19 2
попробовал пример с http://pinvoke.net/default.asp... xtractIcon всё прекрасно работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("shell32.dll")]
        static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
 
        public Form1()
        {
            InitializeComponent();
 
            string fileName = "D:\\somefile.exe";
            IntPtr hIcon = ExtractIcon(IntPtr.Zero, fileName, 0);
            System.Drawing.Icon MyIcon = System.Drawing.Icon.FromHandle(hIcon);
            pictureBox1.Image = MyIcon.ToBitmap();
        }
    }
}
1
10.03.2012, 23:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2012, 23:19
Помогаю со студенческими работами здесь

Как правильно объявить массив?
надо создать массив объектов так, чтобы он был виден во всех процедурах и методах формы для этого...

Как правильно объявить переменную ?
Как правильно объявить переменную, периодически изменяющуюся от "о" до "1" следующим циклом :...

Как правильно объявить процедуру
у меня есть 4 процедуры, однако Паскаль ругается, что какой-то нет, как мне показать, что они есть,...

Как правильно объявить вектор?
Только начинаю постигать STL. Подскажите, как заполнить случайными числами 1..9 значения...

Как правильно объявить, расположить?
Глаза уже вытекают за пару дней вспомнить весь c++. Что тут не так? Догадываюсь что я int main...

Как правильно объявить стек
Доброго времени суток! Не могу понять, как правильно объявить стек. Пробовала по разному, не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru