dll некоректно работает в windowsForm проге HELP
От: Diman88  
Дата: 27.06.10 12:32
Оценка:
Здравствуйте..
Краткий код dll-ки,а точнее только моя функция:
#define EXPORT extern "C" __declspec (dllexport)
EXPORT int CALLBACK bou(int x);
EXPORT int CALLBACK bou(int x)
{
  for(;x==1;){
  int Z=GetKeyState(VK_ADD);//Если кнопка + зажата то возвращается значение меньше 0
  for(;Z<0;)
  {/*Выполняются какието действия*/}
  Sleep(100);//Чтоб не нагружать проц
}

Краткий код программы Form:
public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)     
{ HMODULE hLib;
  hLib = LoadLibrary("abc.dll");
  void (*pFunction)(int);
  (FARPROC &)pFunction = GetProcAddress(hLib, "bou");
  pFunction(1);
}

Вобщем пробовал цеплять мою dll-ку к консольному приложению с темже кодом обращения к dll-ке все работало так как и мне было нужно то есть по нажатию клавиши + выполнялось какоето действие...А когда поместил в приложение виндовсForm этот же код обращения к dll-ke то перехват клавиши не происходит...
Скажите пожалуйсто почему так происходит и как это исправить... Я уже 4 дня голову ломаю...
Я еще плохо разбераюсь в программировании это мая первая dll-ka и Form прога.

30.06.10 13:28: Перенесено из 'C/C++'
Добавлена разметка и табуляция — Кодт
Re: dll некоректно работает в windowsForm проге HELP
От: GhostCoders Россия  
Дата: 28.06.10 11:09
Оценка:
Здравствуйте, Diman88, Вы писали:

D>Здравствуйте..

D>Краткий код dll-ки,а точнее только моя функция:
D>#define EXPORT extern "C" __declspec (dllexport)
D>EXPORT int CALLBACK bou(int x);
D>EXPORT int CALLBACK bou(int x)
D>{
D>for(;x==1{
D>int Z=GetKeyState(VK_ADD);//Если кнопка + зажата то возвращается значение меньше 0
D>for(;Z<0
D>{/*Выполняются какието действия*/}
D>Sleep(100);//Чтоб не нагружать проц
D>}

А где выход из циклов? Ты что-то совершено не так делаешь. функция bou должна возвращать управление....
Третий Рим должен пасть!
Re[2]: dll некоректно работает в windowsForm проге HELP
От: Diman88  
Дата: 29.06.10 08:07
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>А где выход из циклов? Ты что-то совершено не так делаешь. функция bou должна возвращать управление....


Ну я какбы плонировал сделать выход из обоих циклов по нажатью другой клавиши... Или эт всеравно не верно?
ДА и такой еще вопрос : Можно ли вообще при помоши функции GetKeyState глобально перехватить нажатие клавиши?
Re[3]: dll некоректно работает в windowsForm проге HELP
От: Diman88  
Дата: 29.06.10 08:14
Оценка:
Если я делаю все не правильно то пожалуйсто дайте пример верного кода...
Re[3]: dll некоректно работает в windowsForm проге HELP
От: GhostCoders Россия  
Дата: 29.06.10 08:24
Оценка: 3 (1)
Здравствуйте, Diman88, Вы писали:

D>Ну я какбы плонировал сделать выход из обоих циклов по нажатью другой клавиши... Или эт всеравно не верно?

D>ДА и такой еще вопрос : Можно ли вообще при помоши функции GetKeyState глобально перехватить нажатие клавиши?

Я не особо спец по GUI, но как я понял, что GetKeyState() выбирает сообщения из очереди сообщений текущего потока.
Так как в консольных приложениях, наверное, если главный поток не реализует цикл прокачки сообщений, то существует какой-то дополнительный
поток, создаваемый системой.

Поэтому логично, что в windowsForm программе Вы выбираете все сообщения из очереди, и GetKeyState() или блокируется или выдает неверные значения.

Попробуйте вместо нее использовать GetAsyncKeyState().

А еще лучше в windowsForms приложении реализуйте обработчик сообщений от клавиатуры, а в DLL поместите только логику работы
с введенными клавишами, вычислениями, но не работу с клавиатурой.

Да и не нужно в этом случае использовать DLL. Все сделайте в windowsForm приложении.
Третий Рим должен пасть!
Re[4]: dll некоректно работает в windowsForm проге HELP
От: GhostCoders Россия  
Дата: 29.06.10 08:27
Оценка:
Здравствуйте, Diman88, Вы писали:

D>Если я делаю все не правильно то пожалуйсто дайте пример верного кода...

С такой постановкой вопроса я думаю, что тут никто ничего не ответит, а не то что код правильный писать

Потому как неясно чего вы хотите вообще получить, это раз,
и еще у вас архитектурная ошибка, это два.

Сделайте все в windowsForms приложении
Третий Рим должен пасть!
Re[4]: dll некоректно работает в windowsForm проге HELP
От: Diman88  
Дата: 29.06.10 09:35
Оценка:
Здравствуйте, GhostCoders, Вы писали:

Спасибо огромное так и сделаю=)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.