关于Directinput失败的问题

tianxiadys 2012-04-30 05:05:03
刚开始是Acquire失败,返回值为拒绝访问
原因:被360防火墙拒绝!我晕。。
难道各类游戏都不用这个?还是被后门了.....


后来就是GetDeviceState错误了
调试器显示
hr = 0x8007001e 系统无法从指定的设备上读取。

求救!!!
...全文
548 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJN92 2012-04-30
  • 打赏
  • 举报
回复
oooooo 这样
tianxiadys 2012-04-30
  • 打赏
  • 举报
回复
问题解决,directinput以前台访问方式申请后不能失去焦点
tianxiadys 2012-04-30
  • 打赏
  • 举报
回复
把代码贴出来

#include "InPut.h"


LPDIRECTINPUT8 Main_DIP; // InPut句柄
LPDIRECTINPUTDEVICE8 device; // 设备指针
HWND Local_hwnd;

int DIP (HINSTANCE instance,HWND hwnd)
{
HRESULT hr;
Local_hwnd = hwnd;
hr = DirectInput8Create(
instance, // 应用程序实例句柄
0x0800,
IID_IDirectInput8,
(void**)&Main_DIP,
NULL);
if ( FAILED(hr) ) return FALSE;

hr = Main_DIP->CreateDevice(
GUID_SysKeyboard,
&device, // 设备指针
NULL);
if ( FAILED(hr) ) return FALSE;

hr = device->SetDataFormat(&c_dfDIKeyboard); // 数据格式
if ( FAILED(hr) ) return FALSE;

hr = device->SetCooperativeLevel(
Local_hwnd, // 应用程序窗口句柄
DISCL_FOREGROUND // 前台访问
| DISCL_NONEXCLUSIVE); // 非独占访问
if ( FAILED(hr) ) return FALSE;

hr = device->Acquire();
if ( FAILED(hr) ) return FALSE;

return TRUE;
}


int KEYGET()
{
char buffer[256];
HRESULT hr;
hr = device->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);
if ( FAILED(hr) ) return FALSE;
}

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧