Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 8

Нужен учебник по WinAPI

21.08.2013, 16:17. Показов 4747. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Заранее извиняюсь за столь избитую тему, но прошу помощи более опытных товарищей.

Изучаю VB.NET. Программы пишу самые что ни на есть прикладные, типа калькулятора или заполнение данными листов экселя, и язык меня устраивает. Однако для увеличения возможностей хочу изучить WinAPI. И все бы ничего, но я не нашел ни одного учебника, где бы рассказывалось о WinAPI на примере VB.NET. Начал было читать "Win32 API и Visual Basic" Дана Эпплмана, но она написана даже не для VB6, а для предыдущих версий VB. А как известно, хорошая инструкция - это инструкция, написанная для дебилов. Так что вариант "Читай С++ и WinAPI" слегка не подходит.

В верном ли направлении я двигаюсь? Может быть я чего-то не знаю о возможностях .NET, и мне не стоит влезать в WinAPI? Или лучше сразу попытаться сменить сам язык, например на C#? Я бы может был не против это сделать, но даже на элементарное изучение VB.NET ушло добрых полгода...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.08.2013, 16:17
Ответы с готовыми решениями:

Учебник по WinAPI
Подскажите хороший учебник по WinAPI ? Где-то видел отличный учебник по программированию под Windows 95 на C++ и WinAPI . Кто знает,...

Учебник по WinAPI
Всем привет. Посоветуйте, пожалуйста, нормальную книгу по WinAPI. Чтобы было и примеров достаточно, и теории хватало. А то вот начал читать...

Подскажите учебник по WinAPI
Доброго времени суток. Подскажите пожалуйста литературу по WinAPI, так как консольные программы писать уже надоело, а в С++ нету...

27
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
23.01.2016, 18:19
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Студворк — интернет-сервис помощи студентам
jkrnd, вот правильное объявление функции SendMessage:
VB.NET
1
2
Public Declare Function SendMessage Lib "user32.DLL" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
<System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.AsAny)> ByVal lParam As Object) As Integer
Добавлено через 2 минуты
или чтоб покороче выглядела, импортируейте пространство имен System.Runtime.InteropServices
VB.NET
1
2
3
4
5
6
7
Imports System.Runtime.InteropServices
 
Public Declare Function SendMessage Lib "user32.DLL" Alias "SendMessageA" ( _
ByVal hwnd As Integer, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
<MarshalAs(UnmanagedType.AsAny)> ByVal lParam As Object) As Integer
Добавлено через 9 минут
jkrnd, а вообще, обрати внимание на вот эту софтинку, которая пишет правильное оъявление всех WinAPI включая необходимые типы и зависимости:
WinAPI Viewer
2
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
23.01.2016, 18:22
От теперь всё работает. Большое спасибо. Оба варианта проверил. Осталось только понять что такое MarshalAs и с чем его едят.
Наверное есть в msdn место где собраны объявления всех API-функций для NET?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
23.01.2016, 18:24
Цитата Сообщение от jkrnd Посмотреть сообщение
место где собраны объявления всех API-функций
загляните на pinvoke.net
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
23.01.2016, 18:30
я там был, всё по-английски. Ваша утилита dotNET APIViewer.exe подходит мне больше.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
23.01.2016, 18:40
jkrnd, понятноjkrnd, вот сюда еще можете посмотреть, будет полезно
Пошаговое руководство. Вызов API Windows (Visual Basic)
2
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
24.01.2016, 14:23
Цитата Сообщение от Yury Komar Посмотреть сообщение
вот правильное объявление функции SendMessage:
Пока не объявил следующим образом (метод научного тыка) должный результат не получил.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 Public Declare Function SendMessage Lib "user32.DLL" Alias "SendMessageA" ( _
        ByVal hwnd As Integer, _
        ByVal wMsg As Integer, _
        ByVal wParam As Integer, _
        ByRef lParam As Integer) As Integer
Private Const EM_SETTABSTOPS = &HCB
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With TextBox1
            .AcceptsTab = True 'по <TAB> перемещаемся внутри окна
            .Font = New Font("Courier", 12)  'моноширинный шрифт
            .WordWrap = False 'автоперенос слов запрещён
            .ScrollBars = ScrollBars.Both
            .Clear()
        End With
 
        Dim Tabstops(4) As Integer
        Tabstops(1) = 4 * 12
        Tabstops(2) = Tabstops(1) + 4 * 10
        Tabstops(3) = Tabstops(2) + 4 * 8
        Tabstops(4) = Tabstops(3) + 4 * 6
        SendMessage(TextBox1.Handle, EM_SETTABSTOPS, 4, Tabstops(1))
        TextBox1.Text = ""
        TextBox1.Text += "        10        20        30        40         50" + vbCrLf
        TextBox1.Text += "123456789012345678901234567890123456789012345678901" + vbCrLf
 
        TextBox1.Text += "fdc" & vbTab & _
                      "fdc" & vbTab & _
                      "fdc" & vbTab & _
                      "fdc" & vbTab & _
                      "fdc"
End Sub
Если объявлять последний параметр функции не по ссылке (Вы объявляете по значению), то срабатывает только первый TAB. Проверяйте, может я накосячил где.
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
24.01.2016, 14:29
Цитата Сообщение от Yury Komar Посмотреть сообщение
WinAPI Viewer
На работе хотел запустить Вашу софтину (XP SP3) и получил следующее сообщение:
Net 4.0 и ниже стоят VS 2010 установлена
что нужно доустановить?
Миниатюры
Нужен учебник по WinAPI  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
24.01.2016, 14:43
jkrnd, незнаю. Софт не мой..

Добавлено через 1 минуту
jkrnd,
Проверяйте, может я накосячил где.
Что проверить? Ведь все уже работает у вас?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2016, 14:43

Учебник по WINAPI в DEV-C/C++
Спасайте))Нужен хороший учебник в электронном варианте.Нашёл хорошие,но они платные...Желательно 2005 года и старше.

Посоветуйте нормальный учебник по WinAPI
Много раз поднималась тема, но всё же. Посоветуйте понятный учебник по приложениям windows. Чтобы всё обьяснялось на уровне начинающего,...

Нужен учебник
Я хочу выучить язык Delphi, не могли бы вы дать мне учебник по Delphi

Нужен учебник
Народ, я хорошо знаю Паскаль С++, но мне срочно нужен Басик в Экселе! нужен хороший учебник по нему. посоветуйте

Нужен учебник
Народб подскажите пож современный учебник по Java. Что бы можно было использовать в электронном виде. И что бы были нормальнве...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru