Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049

Framework & WinAPI. случаи "неподчинения"

18.07.2010, 14:11. Показов 2896. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вобщем,суть темы: есть VB.NET(хотя тоже самое творится во всех продуктах .net старше версии 2.0)
есть Win7 или Vista.
есть программа,включающая в себя Api-функции.

итог выполнения этой программы: куча ошибок, т.к винда не отдаёт запрашиваемую инфу или же не записывает её в память.
Случай выполенения на WinXP завершается успешно,но вот как быть с семёркой и вистой?
вопрос: что не даёт программе норм использовать АПИ и как это исправить?
думаю,не у одного меня возникала(ет) такая проблема и кто-нибудь всяко,но знает решение.
Господа ЗНАЮЩИЕ и ЗНАКОМЫЕ с данной проблемой,плиз,отпишитесь
Всем ответившим огромное СПС))))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2010, 14:11
Ответы с готовыми решениями:

Как заблокировать сочетание клавиш в C++ && WinApi
Как заблокировать сочетания клавиш, например alt + F4 в моей программе на C++ && WinApi?

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume WHERE ' & ''' &...

error '80020009' Îøèáêà. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error '80020009' ...

23
PB
18.07.2010, 14:37

Не по теме:

Смешивать управляемый код с неуправляемым.... :D

0
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
18.07.2010, 16:02
-смотри что за апи функции используешь. потом ищи их в msdn. читай что для них требуется. там так и написано- минимум виндовс такойто. известно например, что GetPrivateProfileString( работа с ini файлами) уже при 98 виндовсе считалась отмирающей функцией( оставленной только для совместимости).
-по слухам в семерке( уже ненавижу этот виндовс, хотя и не видел) программа не может писать в каталог, где она и лежит. судя по словам, исходник у вас имеется. можете проверить сие мое утверждение.
-отладчик никто не отменял.
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
18.07.2010, 16:08  [ТС]
СПС.попробую
0
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
19.07.2010, 18:02
скорей всего для этих функций нужны права администратора
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
21.07.2010, 11:53  [ТС]
Alex90,Умнее я ничё не читал Я АДМИНИСТРАТОР у меня права АДМИНИСТРАТОРА и программа запускается с пометкой ОТ ИМЕНИ АДМИНИСТРАТОРА. и про какие ты права говоришь?
0
23 / 23 / 7
Регистрация: 30.01.2009
Сообщений: 103
21.07.2010, 16:22
я не экстрасенс и о том что ты запускаешь программу ОТ ИМЕНИ АДМИНИСТРАТОРА не где не упоминалось. Так как на ХР большинство пользователей используют права админа изначально, а не семерке программа нужно дать добро для этих самих прав. Вот по этому я и предположил что программе не хватает полномочий
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
25.07.2010, 12:19  [ТС]
Извиняюсь,что так с ходу наехал((( просто если человек является программером,то я не думаю,что он может ступить и свою программу на полномочия урезать
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
25.07.2010, 22:50
Цитата Сообщение от sh2ezo Посмотреть сообщение
вопрос: что не даёт программе норм использовать АПИ и как это исправить?
Цитата Сообщение от radiohobbyt Посмотреть сообщение
смотри что за апи функции используешь.
так ответа и не последовало.

спокойно использую pinvoke в Seven - пока глюков никаких. Мож антивирь?
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
27.07.2010, 11:27  [ТС]
а опиши,плиз,характер системы(ver Win & antivir),а ещё номер framework'а.
прост надоело уже в урезанном режиме пользоваться((((
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
02.08.2010, 21:51  [ТС]
попробовал переписать в файле проекта назначение и определение прав
прога запускается в административном режиме с полным доступом к ФС,ВП(видео),ИНЕТ и т.д.
но ВинАПИ по-прежнему отказывается отдавать мне данные(например,позицию курсора)
0
3 / 3 / 0
Регистрация: 15.08.2010
Сообщений: 15
15.08.2010, 22:52
У меня была проблема не выполнения АПИ-функций. Но оказалось, что новые компиляторы типы long, например, понимают как 8-байтовые, а для АПИ оказалось, естественно, нужно их заменить на int.
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
16.08.2010, 12:29  [ТС]
эту идею я поробую))спасиб)) но ведь функция GetWindowText отдаёт не long, а string. точнее,не отдаёт,хотя весь инет обегал и понял,что это не в моих кривых руках дело. это нужно,так как координаты я могу узнать и,воспользовавшись стандартными функция фрэймворка,а вот тексты и классы фрэймворк мне из чужих окон точно не вытащит

Добавлено через 9 минут
сейчас посмотрел и увидел одну интересную вещь: в APIGen все long'и итак заменены на string'и,поэтому этот вариант в моём случае битый.
Кстати,вот ещё тут недавно обнаружил один факт: изменяющие функции(например:SetWindowText,setCursor Pos,setClipboardData и т.п.) работают,как часы,а вот функции читающие(Get******** и всё,что с этим связано) не работают.Хотя,запустив NvidiaDesktopManager и попробовав определить через него класс окна,получил нужный результат. Из этого следует,что,реально,что-то уже сам framework мудит.

У кого есть варианты?
0
3 / 3 / 0
Регистрация: 15.08.2010
Сообщений: 15
16.08.2010, 14:05
Ну почему? Что касается функции GetWindowText все в Visual Studio 2008 работает.
Посмотрите пример.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Imports Microsoft.VisualBasic
Module Module1
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
                           ByVal lpWindowName As String) As Integer
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Integer, _
                           ByVal lpString As String, _
                           ByVal cch As Integer) As Integer
 
    Sub Main()
        Dim i As Integer
        '    i = FindWindow(vbNullString, "Microsoft Word")
        i = FindWindow(vbNullString, "Project1 (Выполнение) - Microsoft Visual Studio")
 
        MsgBox(i)
        Dim s As String
 
        Dim k As Integer
        s = New String(vbNullChar, 256)
        k = GetWindowText(i, s, 256)
        MsgBox(s)
    End Sub
End Module
Если оставить типы Long вместо Integer, то не работает. Ругается на выход за пределы. Числовые аргументы должны иметь 4 байта, а не 8.
1
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
17.08.2010, 22:01  [ТС]
Замену GetCursorPos я уже нашёл в самом фрэймворке,а насчёт остальных Get*********-подобных понял свою ошибку. У меня для String'а в определении задавался просто nothing без размера,поэтому он и не отдавал текст. СПС за пример))))))))

Добавлено через 30 минут
Ну,что же,текст я вытащил,имя класса тоже,на радостях попытался считать сообщение
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
Public Class Form1
    Public Structure POINTAPI
        Dim x As Integer
        Dim y As Integer
    End Structure
    Public Structure MSG
        Dim hwnd As Integer
        Dim message As Integer
        Dim wParam As Integer
        Dim lParam As Integer
        Dim time As Integer
        Dim pt As POINTAPI
    End Structure
    Public Declare Function GetMessage Lib "user32" Alias "GetMessageA" (ByVal lpMsg As MSG, ByVal hwnd As Integer, ByVal wMsgFilterMin As Integer, ByVal wMsgFilterMax As Integer) As Integer
    Public Const WM_LBUTTONDBLCLK = &H203
    Public Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer
    Public Const WM_KILLFOCUS = &H8
    Public Const WM_LBUTTONDOWN = &H201
    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        Dim prg As Integer
        prg = 1
        Do While prg = 1
            Dim m As New MSG
            Dim wHand As New Integer
            wHand = WindowFromPoint(Form.MousePosition.X, Form.MousePosition.Y)
            GetMessage(m, wHand, WM_KILLFOCUS, WM_LBUTTONDOWN)
            If m.message = WM_LBUTTONDBLCLK Then MsgBox("OK")
            Application.DoEvents()
        Loop
    End Sub
End Class
выдаёт: мол,ошибка при чтении или записи в защищённую память. Это опять я где-то невнимателен?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.08.2010, 22:10
Ну во первых WindowFromPoint возвращает IntPtr, т.е. HANDLE.
Во вторых WindowFromPoint объявлена не так. Скорее всего GetCursorPos тоже.
В третьих советую заглянуть на PInvoke и смотреть объявления на MSDN.

P.S. hWnd, lParam, wParam тоже должны быть IntPtr.
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
17.08.2010, 22:19  [ТС]
А кто написал,что WindowFromPoint не отдаёт хэндл? отдаёт))) а с IntPtr сща попробую

Добавлено через 4 минуты
ГГ Ответ от программы в моём переводе: жопа

intPtr и integer не отличаются по сути своей))
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
17.08.2010, 22:48
Цитата Сообщение от sh2ezo Посмотреть сообщение
intPtr и integer не отличаются по сути своей
Посмотри в рефлекторе отличается int от IntPtr или нет. Очень советую.
Какие API не работают, список пожалуйста.

Добавлено через 16 минут
И какая цель программы. Если не top secret.
0
3 / 3 / 0
Регистрация: 15.08.2010
Сообщений: 15
17.08.2010, 23:43
Во-первых, функция WindowFromPoint имеет не 2 аргумента, а один. В качестве аргумента в нее передается структура POINT, которая состоит из двух значений.
Во-вторых, действительно непонятно что вы хотите чтобы эта программа делала? Если просто создать окно, то это делается намного проще. Посмотрите как это делает мастер при создании виндового проекта.
Но можно еще проще, можно создать окно вообще парой строк.
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
20.08.2010, 12:57  [ТС]
Ну, окно и я могу парой строк на чистом vb создать и отследить в нём действия без применения API. но это относится лишь к моим окнам,сделанных моим процессом,но фрэймворк,как бы его ни насиловал,не даст контроль над окнами чужих процессов. А мне нужен этот контроль хотя бы для того,чтобы отслеживать действия мыши в чужих окнах и,например,при двойном щелчке вытаскивать из окна(любой тип) текст и сливать его в буфер обмена,а то так иногда бесит переписывать тексты ошибок(это к примеру,а так большое применение можно найти). И,вот ещё,по поводу WindowFromPoint.
Она содержит два аргумента: xPoint & yPoint(screensave внизу).Не знаю,как у вас,а у меня именно такая структура работает))) И,вот ещё,integer & IntPtr у меня конвертируются отлично,не знаю,как у вас. Ну,так что,кто нибудь может сказать,в чём проблема,если на сей раз не в моих руках? И ещё,я посмотрел норм аргументы в MSDN для GetMessage и там значится указатель в памяти на структуру MSG мою. Так вот,я подумал,что,может именнго MSG не так объявлен и из-за этого API не может записать в него данные,так как сигмент в том месте почему-то лочится. Кто-нибудь может что-то типа моего отписать,но где обязательно используется GetMessage и MSG? нужно проверенный пример,а не сходу написанный
Миниатюры
Framework & WinAPI. случаи "неподчинения"  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2010, 12:57
Помогаю со студенческими работами здесь

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2
pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2 Мультимедиа аудиоконтроллер помогите плз найти...

Мультимедиа контролер PCI\VEN_14F1&DEV_8800&SUBSYS_EA3D14F1&REV_05\4&25700A26&0&3020
Помогите пожалуйста найти драйвер на мультимедиа видеоконтролер ...

Нужен драйвера, код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17
всем привет !! уменя нет звука нужен драйвер код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17 скачал прогу их много ...

немогу найти драйвера на PCI\VEN_1039&DEV_7012&SUBSYS_810D1043&REV_A0\3&61AAA01&0&17
Мультимедиа аудиоконтроллер PCI\VEN_1039&DEV_7012&SUBSYS_810D1043&REV_A0\3&61AAA01&0&17

Simple WinAPI framework
#include "app.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int ShowCmd) { Application *app...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru