关于调用api函数CreateProcessAsUser报错"error:6 句柄无效" [问题点数:25分,结帖人norikosaika0001]

Bbs1
本版专家分:0
结帖率 100%
Bbs11
本版专家分:267712
版主
Blank
GitHub 绑定GitHub第三方账户获取
Blank
进士 2006年 总版技术专家分年内排行榜第四
Blank
金牌 2006年4月 总版技术专家分月排行榜第一
Blank
铜牌 2006年3月 总版技术专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs12
本版专家分:361543
版主
Blank
名人 2013年 荣获名人称号
Blank
探花 2011年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第五
Blank
金牌 2012年1月 总版技术专家分月排行榜第一
Bbs1
本版专家分:0
Bbs5
本版专家分:3616
Bbs1
本版专家分:0
Bbs12
本版专家分:361543
版主
Blank
名人 2013年 荣获名人称号
Blank
探花 2011年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第五
Blank
金牌 2012年1月 总版技术专家分月排行榜第一
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs5
本版专家分:3616
CreateProcessAsUser调用问题
为了实现远程连接也能和服务程序交互,以下是我实现的代码,但是执行完既没<em>报错</em>也没看到服务程序启动,连任务管理器里面都没有该进程(把显示所有用户的进程勾起来也是一样)。原先直接用CreateProcess创建进程倒是可以,但是就是只能本机本地交互,其它登入用户都没办法交互,我的服务程序本身是可以允许交互的(CreateService参数有设置SERVICE_INTERACTIVE_PROCESS,且在控制面板里面的服务--登入也看过了,是允许交互的)。rnrn代码如下:rnBOOL RunProcess(int ProcessIndex)rnrn char* pProcessNames;rn pProcessNames = ProcessNames[ProcessIndex]; rn if (pProcessNames[strlen(pProcessNames)-1] == '\\')rn return false;rnrn //获取服务进程Tokenrn HANDLE hTokenThis = NULL; rn HANDLE hTokenDup = NULL; rn BOOL bResult = GetTokenByName(hTokenThis, "EXPLORER.EXE");rn if (!bResult) rn rn WriteLog(pLogFile, "Failed to GetTokenByName!");rn return FALSE; rn rn //复制服务进程的Token然后修改其中的SessionId,用于在用户桌面上创建一个具有SYSTEM权限的新进程rn bResult = DuplicateTokenEx(hTokenThis, MAXIMUM_ALLOWED,NULL, SecurityIdentification, TokenPrimary, &hTokenDup); rn if (!bResult)rn rn CloseHandle(hTokenThis);rn WriteLog(pLogFile, "Failed to DuplicateTokenEx!");rn return FALSE;rn rnrn //遍历出活动SessionIdrn DWORD dwSessionId = 0;rn WTS_SESSION_INFO* sessionInfo = NULL;rn DWORD ndSessionInfoCount;rn bResult = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &sessionInfo, &ndSessionInfoCount);rn if (!bResult)rn rn CloseHandle(hTokenDup);rn CloseHandle(hTokenThis);rn WriteLog(pLogFile, "Failed to WTSEnumerateSessions!");rn return FALSE;rn rn for(unsigned int i=0; i
GetLastError=6无效句柄,不知如何解决
我需要完成的操作是:PC接收GPS串口数据,将这些数据发送到ram上去,ram处理这些数据,提取一部分,再发回给PC,把处理过的数据存在文件里。rn现在遇到的问题,把数据发回到PC的时候,发现PC没有收到数据,用GetLastError()得到6,说是<em>句柄</em><em>无效</em>,不知道如何解决,新手一枚,希望大家多多帮忙T^TrnPS.用串口助手测试过ram上的程序,应该是没有问题的
WARNING:WaitCommEvent()Failed with the following error:句柄无效
WARNING:WaitCommEvent()Failed with the following <em>error</em>:<em>句柄</em><em>无效</em> Port:4rn这是什么意思,该怎么操作
WaitCommEvent() error:句柄无效。Port:COM17
像串口端口写数据时出现如下错误:rnWaitCommEvent() <em>error</em>:<em>句柄</em><em>无效</em>。rnPort:COM17rnrn跟踪调试没有发现在哪里出错,麻烦大家帮看看。
selenium webdriver.Chrome OSError: [WinError 6] 句柄无效
webdriver.Chrome执行完忘记close,再次执行<em>报错</em> OSError: [WinError 6] <em>句柄</em><em>无效</em> 如何解决???rn代码如下:rnrnimport requestsrnfrom bs4 import BeautifulSouprnfrom selenium import webdriverrnfrom selenium.webdriver.chrome.options import Optionsrnchrome_options = Options()rnchrome_options.add_argument('--headless')rnchrome_options.add_argument('--disable-gpu')rndriver = webdriver.Chrome(executable_path='C:/phantomjs/bin/chromedriver', chrome_options=chrome_options)rndriver.get("http://news.sina.com.cn/china/")rnprint(driver.page_source)rndriver.close() rndriver.quit()rn
关于API函数中的句柄的定义,及用法
API<em>函数</em>中经常有些参数是什么什么 的<em>句柄</em>,不明白它是怎么用,能不能给我这个菜鸟讲一下,最好是清楚一点
菜鸟调用API函数报错,请指教
我的程序很简单,就是想体会一下如何<em>调用</em>API:rn1新建了一个窗体,上面放一个按钮cb_1rn2在窗体中 declare global external functions中添加如下代码rnFUNCTION ulong GetComputerName(ref string lpBuffer,ref ulong nSize) LIBRARY "kernel32.dll" ALIAS FOR "GetComputerNameA"rn3在cb_1的单击事件中添加如下代码rnstring s rnulong l rnl = 100 rnGetComputerName(s,l) rnmessagebox('',s)rn4然后我保存的时候,系统提示unknown function name:getcomputernamern请问这是怎么回事啊?rn谢谢!
为什么调用API的sleep函数总是报错
我在应用对象中定义了一个全局外部<em>函数</em>:rnrn SUBROUTINE Sleep(ulong milli) LIBRARY "Kernel32.dll"rn用于延时。rn可是,每次在用到这一<em>函数</em>时,总是被PB7<em>报错</em>:rn  PowerBuilder Application Execution Error:rn Application terminated.rn Error: Error calling external function sleep at line 4 in openrn event of object w_exit.rn请高手们帮帮我!rn
调用WNetEnumResource函数api报错啊!!
procedure Tform1.FindAllComputers(Workgroup : String);rnrn Varrnrn EnumHandle : THandle;rnrn WorkgroupRS : TNetResource;rnrn Buf : Array[1..500] of TNetResource;rnrn BufSize : Integer;rnrn Entries : Integer;rnrn Result : Integer;rnrn rnrn beginrnrn ComputerCount := 0;rnrn rnrn Workgroup := Workgroup + #0;rnrn rnrn FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);rnrn With WorkgroupRS do beginrnrn dwScope := 2;rnrn dwType := 3;rnrn dwDisplayType := 1;rnrn dwUsage := 2;rnrn lpRemoteName := @Workgroup[1];rnrn end;rnrn rnrn WNetOpenEnum( RESOURCE_GLOBALNET,rnrn RESOURCETYPE_ANY,rnrn 0,rnrn @WorkgroupRS,rnrn EnumHandle );rnrnrnrn Repeatrnrn Entries := 1;rnrn BufSize := SizeOf(Buf);rnrnrnrn// Result :=rnrn// WNetEnumResource(EnumHandle,Entries,@Buf,BufSize );rnrn If (Result = NO_ERROR) and (Entries = 1) then beginrnrn Inc( ComputerCount );rnrn Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);rnrn end;rnrn Until (Entries <> 1) or (Result <> NO_ERROR);rnrn rnrn WNetCloseEnum( EnumHandle );rnrn end;rnrn// Result :=rnrn// WNetEnumResource(EnumHandle,Entries,@Buf,BufSize );运行<em>报错</em>;错误是rn[Error] Unit1.pas(126): Types of actual and formal var parameters must be identicalrn[Error] Unit1.pas(126): Types of actual and formal var parameters must be identicalrn[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'rnrn
关于调用API函数的问题!!!
我想<em>调用</em>API<em>函数</em>,FINDFIRST,FINDNEXT,目的是要找到某个文件夹下的所有的文件的名字,在PB中<em>调用</em>的时候,有个参数类型在PB中是没有的,自己想建结构体也不行,也缺少几个数据类型,怎么办,谁做过,给个例子,谢谢!!!rn还有个问题,今天突然想玩玩MSQL,自己写了个SQL建表的脚本,但是却不知道SQL是在哪儿执行脚本的,唉,惨,哈哈!!!rn请大家帮忙!!!
关于调用api函数的问题?
我查帮助文档发现:ConvertSidToStringSid<em>函数</em>在"Sddl.h"头文件中申明,在Adv<em>api</em>32.dll中实现,但是我在硬盘上找不到sddl.h文件,于是我想自己申明使用,rn可是链接不通过。不知道为什么,望大侠指教。rnrnextern "C" WINADVAPI BOOL WINAPI ConvertSidToStringSid(PSID Sid, LPTSTR* StringSid);rnrnextern "C" WINADVAPI BOOL WINAPI ConvertSecurityDescriptorToStringSecurityDescriptor(rn PSECURITY_DESCRIPTOR SecurityDescriptor, rn DWORD RequestedStringSDRevision, rn SECURITY_INFORMATION SecurityInformation, rn LPTSTR* StringSecurityDescriptor, rn PULONG StringSecurityDescriptorLenrn);rnrnConvertSidToStringSid 是可以链接通过的,rnConvertSecurityDescriptorToStringSecurityDescriptor 不能链接通过。rnrn出错信息:rnrnText1.obj : <em>error</em> LNK2001: unresolved external symbol __imp__ConvertSecurityDescriptorToStringSecurityDescriptor@20rnDebug/Text1.exe : fatal <em>error</em> LNK1120: 1 unresolved externalsrnError executing link.exe.rn
句柄无效
[img=https://img-bbs.csdn.net/upload/201405/23/1400810583_718778.jpg][/img]rnrnrn双击图片<em>报错</em>,急等解决。谢谢
句柄无效!
用VS编译程序rn一编译就就提示:<em>句柄</em><em>无效</em>!rn然后就失败了 rnrn好象是我意外的关闭了一个系统服务造成的rn不是程序的毛病 我就是只拖个按钮编译都提示错误rnrn怎么解决
无效句柄
system Error . Code 1400 ,<em>无效</em>的窗口<em>句柄</em>. rn为什么?我就是把TCoustomMemo改了个名字,再引用它时,就出现这个。
请教关于使用函数CreateProcessAsUser的问题
最近通过使用logonuser及CreateProcessAsUser<em>函数</em>在服务中启动某应用程序。当此应用程序是MFC程序时,不能启动,报“VC++ RunTime Error...”错误,如果程序是非MFC程序就可启动,有没有哪位老大知道是怎么回事,谢谢!
易语言之句柄和API的认识与调用
易语言之<em>句柄</em>和API的认识与<em>调用</em>,易语言教程, 例程方便初学者。
取得对话框句柄api函数
我需要在一个自定义<em>函数</em>里<em>调用</em>SetDlgItemInt<em>函数</em>,但不知如何得到特定的对话框?有没有这样的<em>api</em><em>函数</em>?
关于句柄无效的问题
rn rn rn rn rn rn rn 无标题文档 rn rnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn 登陆页面 rn rn rn 用户名: rn 请输入用户名 rn rn rn 密码: rn rn rn rn rn rn rn rn rn rn rn rn rn rnrn当我输入正确的用户名和密码之后就会显示 rn行<em>句柄</em><em>无效</em>。 rnDescription: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the <em>error</em> and where it originated in the code. rnrnException Details: System.Data.OleDb.OleDbException: 行<em>句柄</em><em>无效</em>。 rnrnSource Error: rnrnThe source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL: rnrn请问高手我该怎么修改这段代码呀?我认为问题在Session("用户名")=rd("用户名")上。当我把这句去掉 rn然后把Response.redirect(Session("file") & "?歌曲编号=" & Session("歌曲编号"))改成Response.redirect("temp.aspx")rn时候可以运行。但就是不知道怎么改。谁能帮帮我呀?rnrn
API WriteFile和readFile 返回错误:无效句柄
如题所述,在HID通讯中,查找到设备路径后,使用CreatFile获得一个<em>句柄</em>(_HIDHandle = 1488 ),然后用writeFile写入信息01,然后下位机会回传01,用readFile接受。rnrn直接执行writeFile错误,<em>无效</em><em>句柄</em>,但是加上断点,就没有问题了,后边的能继续执行下去。rnrn[code=C#]rn //打开设备rn public bool openDevice()rn rn bool DeviceFound = false;rn string[] DevicePathName = new string[1];rn int MemberIndex = 0;rn rn _MyDeviceDetected = false;rnrn Security.lpSecurityDescriptor = 0;rn Security.bInheritHandle = System.Convert.ToInt32(true);rn Security.nLength = Marshal.SizeOf(Security);rnrnrn _MyDeviceManagement.FindDeviceFromGuid(this.vid,this.pid,ref DevicePathName);rn //发现设备,返回符合要求pid vid的设备。rn //获得路径:"\\\\?\\hid#vid_2047&pid_0301#6&250fb661&0&0000#4d1e55b2-f16f-11cf-88cb-001111000030"rnrn if (DevicePathName.Length >0)rn rn while(MemberIndex );rn status = DeviceManagementApiDeclarations.HID_DEVICE_TRANSFER_FAILED;rn this.closeHandles();rn rn rn elsern rn status = DeviceManagementApiDeclarations.HID_DEVICE_TRANSFER_FAILED;rn rn rn else status = DeviceManagementApiDeclarations.HID_DEVICE_SUCCESS;rn rn return status;rn rnrn public int readData(ref byte[] data)rn rn int status = DeviceManagementApiDeclarations.HID_DEVICE_SUCCESS;rn if (!this._MyDeviceDetected)rn if (!this.openDevice())rn rn status = DeviceManagementApiDeclarations.HID_DEVICE_NOT_OPENED;rn return status;rn rnrnrn byte[] readBuff = new byte[this.readLengthOnce];rnrn int relReaded = 0;rn int result = FileIOApiDeclarations.ReadFile(this._HIDHandle, ref readBuff[0], this.readLengthOnce, ref relReaded, ref overlappedRead);rn if (result == 0) rn rn int <em>error</em> = DebuggingDeclarations.GetLastError();rn // <em>error</em>为6,rn if (<em>error</em> == FileIOApiDeclarations.ERROR_IO_PENDING)rn rn int waitStatus = FileIOApiDeclarations.WaitForSingleObject(overlappedRead.hEvent, 50);rn if (waitStatus == FileIOApiDeclarations.WAIT_OBJECT_0)rn rn int readBytes = 0;rn result = FileIOApiDeclarations.GetOverlappedResult(this._HIDHandle, ref overlappedRead, ref readBytes, false);rn rn else if (waitStatus == FileIOApiDeclarations.WAIT_TIMEOUT)rn rn status = DeviceManagementApiDeclarations.HID_DEVICE_TRANSFER_TIMEOUT;rn this.closeHandles(); rn rn elsern rn status = DeviceManagementApiDeclarations.HID_DEVICE_TRANSFER_FAILED;rn this.closeHandles();rn rn rn rn rnrn return status;rnrn rnrn[/code]rnrnrn[b][size=16px] 但是在writeFile此处加一断点,调试就通过、后边的<em>error</em>为997(挂起,发送成功) [/size][/b]rnrn
关于蛋疼的句柄无效。。
[img=https://img-bbs.csdn.net/upload/201407/29/1406616697_886673.png][/img]rnrn我是做的一个截图功能,截图当前指定大小的图片rn[code=csharp]rn //截屏保存到launch文件夹下rn string picname = "Launch for " + lbl_projectnum.Text + " R" + lbl_revision.Text + ".bmp"; //图片名字rn System.Drawing.Size size = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size;rn System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(size.Width, size.Height);rn System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);rn g.CopyFromScreen(new System.Drawing.Point(0, 100), new System.Drawing.Point(0, 150), size);rn g.Save();rn g.Dispose();rn bmp.Save(path + picname);rn[/code]rnrnrn本地上运行可以通过,发布到服务器就<em>句柄</em>错误。。。。求指导。。。
CreateProcessAsUser
将explorer.exe的令牌传给启动的应用程序后,这个应用程序窗口中的浏览的目录和文件的目录树前的图标全部不可见!!
saiku调用api报错
title: saiku<em>调用</em><em>api</em><em>报错</em> tags: saiku <em>api</em> 登录 <em>报错</em> categories: saiku date: 2017-10-31 11:05:23 背景 昨天db扩容 因此将saiku服务关闭 今天生产环境受到一堆<em>报错</em>邮件如下 基于移动端开发同学和报表开发同学都没有发布和修改对应代码 初步考虑是否和配置相关 思路 首先check saiku的源码【开源大法好】 ...
API 函数 WinUsb_Initialize (获取WinUsb句柄报错问题
BOOL __stdcallrnWinUsb_Initialize(rn __in HANDLE DeviceHandle,rn __out PWINUSB_INTERFACE_HANDLE InterfaceHandlern );rn我的代码:rnHANDLE deviceHandle; (这个<em>句柄</em>我获取的对,这就一个例子)rnPWINUSB_INTERFACE_HANDLE winUsbHandle;(如果我这么定义的话 程序运行到下一句就直接崩溃了 跟踪也一样)rnWINUSB_INTERFACE_HANDLE winUsbHandle;(如果这么定义的话 下面用&winUsbHandle 程序不崩溃 但是返回的错误是ERROR:1 :功能错误)rn BOOL success=WinUsb_Initialize(deviceHandle,winUsbHandle);rn if (success==NULL)rn rn CString m_<em>error</em>;rn m_<em>error</em>.Format("ERROR:%.4x",GetLastError());rn MessageBox(m_<em>error</em>);rn rn这个<em>函数</em>在MSDN 上就是这么用的 如何修改~ 能正确通过
为和这个API调用无效
ShowWindow(GetDesktopWindow(),SW_HIDE);rn但是EnableWindow(GetDesktopWindow(),FALSE)却有效
为什么调用ScreenToClient api无效
[code=VB.NET]rnDeclare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (ByRef lpPoint As POINTAPI) As Longrn Declare Function ScreenToClient Lib "user32 " Alias "ScreenToClient" (ByRef hwnd As Integer, ByRef lpPoint As POINTAPI) As LongrnDim pi As POINTAPI = New POINTAPIrn GetCursorPos(pi)rnDim hWnd As Integer = ListView1.Handle.ToInt32rn ScreenToClient(hWnd, pi)[/code]rnListView1是一个列表控件,GetCursorPos<em>调用</em>成功,ScreenToClient<em>调用</em>后pi的值不变,为什么?
请教一下CreateProcessAsUser函数的用法!
我试了很多次都不成功,哪位贴段源代码上来?谢谢
关于函数句柄的问题
我现在把里面的窗体,按钮,文本框等控件都封装进一个类里面了(目标是想把它写的像C#一样方便,不过现在还差很远),然后每个类里面都有一个(<em>函数</em>指针类型)的成员变量eventrnrn我现在的想法是,在声明一个类成员(比如Button)的时候指定一个响应<em>函数</em>;当程序程序的回调<em>函数</em>遇到相关消息(WM_COMMAND)的时候可以通过Button的一个成员<em>调用</em>这个<em>函数</em>
nero 6 报错:unspcifyed target error
在win xpsp2下,nero 6 事件中,<em>报错</em>:unspcifyed target <em>error</em>。 请问这是什么原因?rnrnrn
PB调用api函数,如何获取OUTLOOK EXPRESS菜单句柄
用<em>api</em><em>函数</em>获取outlook express窗口<em>句柄</em>成功,但用getmenu(hwnd)获取outlook express菜单<em>句柄</em>未成功.但同样<em>函数</em><em>调用</em>方法可以成功获取应用pb编写的窗口的菜单<em>句柄</em>及菜单项ID。
asp.net 调用API函数
asp.net <em>调用</em>API<em>函数</em>! 很值得下载看看!资源免费,大家分享!!
求助:调用API函数
在Delphi中怎样<em>调用</em>API: NetShareAdd等<em>函数</em>
调用api函数不能实现
[code=C/C++]rnvoid ShowVersion(HWND hwnd)rnrn OSVERSIONINFOA version;rn TCHAR *chOSVersion;rn ZeroMemory(&version,sizeof(version));rn version.dwOSVersionInfoSize = sizeof(version);rn GetVersionEx(&version);rn switch(version.dwPlatformId)rn rn case VER_PLATFORM_WIN32_NT: /*NT架构操作系统系列*/ rn rn if(4 == version.dwMajorVersion && 0 == version.dwMinorVersion)rn rn chOSVersion = TEXT("Windows NT");rn rn else if(5 == version.dwMajorVersion && 0 == version.dwMinorVersion)rn rn chOSVersion = TEXT("Windows 2000");rn rn else if(5 == version.dwMajorVersion && 1 == version.dwMinorVersion)rn rn chOSVersion = TEXT("Windows XP");rn rn else if(6 == version.dwMajorVersion && 0 == version.dwMinorVersion)rn rn chOSVersion = TEXT("Windows Vista");rn rn rn break;rn case VER_PLATFORM_WIN32_WINDOWS: /*旧架构操作系统 */rn rn if(4 == version.dwMajorVersion && 10 == version.dwMinorVersion)rn rn chOSVersion = TEXT("Windows 98");rn rn else if(4 == version.dwMajorVersion && 90 == version.dwMinorVersion)rn rn chOSVersion = TEXT("Windows ME");rn rn elsern rn chOSVersion = TEXT("Windows 95");rn rn rn break;rn default:rn break;rn rn SetDlgItemText(hwnd,IDC_EDT2,chOSVersion);rnrn[/code]rnrn为什么在运行时不能显示系统的版本
怎样调用api函数
谢谢rn
如何调用API函数
如题,菜鸟 多谢
c#调用api函数
怎么在c#中使用<em>api</em><em>函数</em>,有这方面的书吗?。c#,vb.net,vc++.net共用相同的<em>api</em>吗?rn望各位大虾赐教!!
Delphi调用API函数
 添加引用:ShellAPI单元 打开PDF文件 shellexecute(handle, 'open', PChar(filePath), nil, nil, SW_SHOWNORMAL); 打开网址 ShellExecute(Application.Handle, nil, 'http://www.iconfont.cn/', nil, nil, SW_SHOWNORMAL);  ...
调用输入法的的api函数
本题为MS项目组给我们公司的考核题:(自认为自己很牛,和无所不能者来试试!)rnrn需要在程序中不使用键盘,但是要输入数据(对系统中已有的输入法都要有一个展示的功能),所以要<em>调用</em>API rn rn请讲解详细一点,有可通过的解决方案最好!rnrn本人MSN sunshina1314@hotmail.com 有什么不清楚问我!
API函数调用
<em>函数</em>的声明:rnFunction Long FtpFindFirstFileA (Long hFtpSession ,String lpszSearchFile ,ref WIN32_FIND_DATA lpFindFileData ,Long dwFlags ,Long dwContent) Library "wininet.dll"rnrntype win32_find_data from structurern long dwfileattributesrn filetime ftcreationtimern filetime ftlastaccesstimern filetime ftlastwritetimern long nfilesizehighrn long nfilesizelowrn long dwreserved0rn long dwreserved1rn String cFileNamern String cAlternaternend typern等。rn在<em>调用</em>中,得不到 WIN32_FIND_DATA 结构体的内容,要不就是内存只读错误。rn请高手参与。谢谢。rnrnrn
如何调用api函数??
点击一个按钮,让他关闭计算机,怎么写呀??在哪里<em>调用</em>声明呀??
如何调用api函数
如何用c++<em>调用</em>API<em>函数</em>中的GetKeyboardType、SetCaretBlinkTime,ChageDisplaySettingsEx<em>函数</em>,高手请用c++源代码指明,先谢啦
api函数调用的疑惑。
为什么API<em>函数</em>中有FindWindowrn而pb中应用要写成FindWindowArnFunction ulong FindWindowA( ref string lpClassName, ref string lpWindowName) Library "USER32.DLL"
调用API函数
<em>调用</em>API<em>函数</em> 2010年11月26日       通常来说API<em>函数</em>都是封装在动态链接库当中的,在程序的开发过程中并没有<em>调用</em>动态链接库,而只要包含库<em>函数</em>的头文件就可以<em>调用</em>API<em>函数</em>了,这是因为编译器会利用头文件和LIB文件到动态链接库中去寻找相应的<em>函数</em>并把<em>函数</em>加入到程序当中。       LIB文件是动态链接库输出<em>函数</em>信息的输入库文件,每一个LIB文件都会对应一个动态链接库,两都一个...
api函数调用问题?
<em>函数</em>接口为: function GetCardNoCRC(CardNo:PChar):PChar;rn此<em>函数</em>被封装在TaxShare.dll动态库中,在.net中如何向它传参数?rn主要是用于生成条形码!rn请各位给小弟指点指点,急用!rn谢谢各位!
api函数调用
<em>函数</em>CreateToolhelp32Snapshot在msdn中有定义。但是<em>调用</em>的时候提示rn<em>error</em> C2065: 'CreateToolhelp32Snapshot' : undeclared identifierrn请问这是怎么回事?rn在头文件中已经包含了 "stdafx.h"
api 函数 调用 ExitWindowsEx
参数 EMX_reboot ,EMX_logoff,EMX_shotdown rnexitwindowsex emx_reboot,0 这样不对rn该怎么写?
vb调用API函数
vb<em>调用</em>API<em>函数</em>的声明 在VB中声明API<em>函数</em>有两种方法:如果我们只在某个窗体中使用API<em>函数</em>,我们可以在窗体代码的General部分声明它: 声明的语法是: Private Declare Function ... Private Declare Sub..... 这里必须采用Private声明,因为这个API<em>函数</em>只能被一个窗体内的程序所<em>调用</em>。 如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API<em>函数</em>,就需要在模块中声明了。 先添加一个模块, 然后采用如下语法声明: Public Declare Function.... Public Declare Sub.... Public声明的含义是把API<em>函数</em>作为一个公共<em>函数</em>或过程,在一个工程中的任何位置(包括所有的窗体和模块)都能直接<em>调用</em>它。声明完毕我们就能在程序中使用此API<em>函数</em>了。
调用API函数的问题
在声明了之后,怎么对<em>函数</em>的参数赋值,比如说<em>句柄</em>,指针,内存地址?能举例帮忙解释吗?
调用api函数出错
我<em>调用</em><em>api</em> <em>函数</em>RegOpenKey,在声明处:rnPrivate Declare Function RegOpenKey Lib "adv<em>api</em>32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal phkResult As Long) As Longrn定义'HKEY_LOCAL_MACHINE = &H80000002'rn<em>调用</em> RegOpenKey (HKEY_LOCAL_MACHINE,...,...)rn出错
调用API函数出错。
Function long ChangeDisplaySetting(LPDEVMODE lpDevMode,DWOED dwflags) Library "use32.lib"rnFunction BOOL EnumDisplaySetting(LPCTSTR lpszDeviceName,DWORD iModeNum,LPDEVMODE lpDevMode) Library "use32.lib"rnDEVMODE dm;rnde.dmSize=sizeof(dm);rn提示为非法的lpDevMode变量。这是怎么回事呢,请指教,呵呵
C#调用API函数
C#怎样<em>调用</em>API<em>函数</em>?请各位老鸟出招rn
隐藏调用API函数
方法一: Tool.h typedef NTSTATUS (NTAPI *T_NtDeleteValueKey)( HANDLE KeyHandle, PUNICODE_STRING ValueName ); Tool.cpp T_NtDeleteValueKey pNtDeleteValueKey; HMODULE hModule=GetModuleHan
c#调用API函数
[DllImport("user32.dll")]rn public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);rnrn private void Page_Load(object sender, System.EventArgs e)rn rn // 在此处放置用户代码以初始化页面rn string lpszParentClass = "#32770"; //整个窗口的类名 rn string lpszParentWindow = "Microsoft Excel"; //窗口标题 rn IntPtr ParenthWnd = new IntPtr(0); rn rn //查到窗体,得到整个窗体 rn //ParenthWnd = FindWindow(lpszParentClass,lpszParentWindow); rn ParenthWnd = FindWindow(lpszParentClass,lpszParentWindow);rn //判断这个窗体是否有效rn if (!ParenthWnd.Equals(IntPtr.Zero)) rn rn Response.Write("找到了!");rn rn elsern rn Response.Write("Sorry!没找到此窗口!");rn rnrn rn怎么总是提示我没找到此窗口呢?rn请问错在哪里了?
Lotus 调用API函数 ??
我想知道在Lotus 中可以<em>调用</em>API<em>函数</em>,应该怎么做啊? 最好有个小小的例子??rn
调用web api报错
使用ajax请求web <em>api</em>时,进入success,但没有正确返回结果。是我转换为json字符串时错误,还是不需要转换?rn返回的错误信息如下:rnCannot deserialize the current JSON object (e.g. "name":"value") into type 'System.Collections.Generic.ICollection`1[Clairvoyance.Plugin.Analytics.Flow.ViewModels.ChargeDataApiModel]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.rnTo fix this <em>error</em> either change the[/code] JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.rnPath 'Name', line 1, position 12.rnrn使用的ajax请求rn[code=javascript] var obj = new Object();rn obj.Name = '僮仲';rn obj.startTime = '2018-04-09T00:00:00';rn obj.endTime = '2018-04-09T23:59:59';rn obj.amount = 380;rn rnrn $.ajax(rn url: "https://tc.360.com/<em>api</em>/Charge",rn type: "POST",rn contentType: "application/json",rn dataType: "json",rn beforeSend: function (xhr) rn xhr.setRequestHeader("Token", "6C77C8D9912571D093A97150A4EEA4C88D749F0A326BC4B2A43BE4265F399066E301119C7358583526C5A2831D52A5");rn , rn data: JSON.stringify(obj), rn success: function (result) rn console.info(result.msg);rn debuggerrn ,rn <em>error</em>: function (data) debugger; alert(data.msg); ,[/code]rn
关于调用 GlobalMemoryStatus API函数的问题
我在一个标准模块中申明了:rnPublic Declare Sub GlobalMemoryStatus Lib "kernel32" (ByRef lpBuffer As MEMORYSTATUS)rnPublic Type MEMORYSTATUSrn dwLength As Longrn dwMemoryLoad As Longrn dwTotalPhys As Longrn dwAvailPhys As Longrn dwTotalPageFile As Longrn dwAvailPageFile As Longrn dwTotalVirtual As Longrn dwAvailVirtual As LongrnEnd Typernrn在窗体模块中有一个按钮,按钮的事件如下:rnPrivate Sub Command1_Click()rn GlobalMemoryStatus MEMORYSTATUSrnEnd Subrnrn当单击按钮时,会出现: ByRef argument mismatch 的错误,不知道怎么解决???
关于VB.NET调用WINDOWS API 函数的问题......
我要用VB.NET做一个类似于IE浏览器的浏览器rnrn要实现文件菜单中的新建\打开\保存\另存为\打印\预览功能应该<em>调用</em>什么API<em>函数</em>?rnrn还有"查看"菜单中要<em>调用</em>的API<em>函数</em>rnrn请各位大虾不吝赐教
关于VB.NET中如何调用API函数?
记得以前VB 6.0有个API对象查看器,轻松添加API<em>函数</em>rnrn可是在VB.NET中我怎么找不到呢?rnrn高手教教我
关于直接调用ado的api函数问题。
在使用ado链接的过程中,需要在connection string中设置。点击build,弹出数据链接属性窗口,现在问题是,我如果想通过点击按钮后直接就动态<em>调用</em>这个数据链接属性窗口,它的<em>api</em><em>函数</em>是怎么写的。
关于EXPLORER进程调用的API函数
由于我想挂接EXPLORER进程使用的API,所以想知道EXPLORER到底执行了哪些API.rn当我打开一个有文件的文件夹时EXPLORER会列出这个文件夹中所有的文件,这个<em>调用</em>了哪些API?rn当我把鼠标移动到某个文件上的时候,EXPLORER会显示他的具体的属性,这个又具体<em>调用</em>了哪些API?
GetCurrentProcess得到无效句柄
屏幕取词,我在dll中<em>调用</em>GetCurrentProcess得到的返回值总是-1,而WriteProcessMemory每次都返回内存分配访问<em>无效</em>、错误代码998.rn代码如下:rn#include "stdafx.h"rn#include "MouseGetWord.h"rn#include rn#include rn#pragma comment(lib,"ImageHlp")rnrn#pragma data_seg("ShareData")rnHWND ghWnd=NULL;rnHMODULE g_hExe = 0; // 当前进程模块<em>句柄</em>rnint gi_MousePosX = 0;rnint gi_MousePosY = 0;rnUINT gu_TimerID = 0;rnHWND gh_MouseWnd = NULL;rn#pragma data_seg()rn#pragma comment(linker,"/SECTION:ShareData,RWS")rn#define WM_MOUSEINFO WM_USER + 100rnrnHHOOK ghMouseHook=NULL;rnHINSTANCE ghInstance=NULL;rnrnVOID CALLBACK TimerFunc(HWND wHwnd,UINT uMsg,UINT dEvent,DWORD dwTime);rnBOOL WINAPI Hook_TextOutA(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString, int cbString);rnVOID ModifyIATs(LPCSTR szDllName,PROC pfnOrg,PROC pfnNew);rn//---------------------------------------------------------------------------rnBOOL APIENTRY DllMain( HANDLE hModule, rn DWORD ul_reason_for_call, rn LPVOID lpReservedrn )rnrn ghInstance = (HINSTANCE)hModule;rn switch (ul_reason_for_call)rn rn case DLL_PROCESS_ATTACH:rn ModifyIATs("GDI32.dll",GetProcAddress(GetModuleHandle("GDI32.DLL"),rn "TextOutA"),rn (PROC)Hook_TextOutA);rn break;rn case DLL_PROCESS_DETACH:rn ModifyIATs("GDI32.dll",(PROC)Hook_TextOutA,GetProcAddress(GetModuleHandle("GDI32.DLL"),"TextOutA"));rn if (ghMouseHook != NULL) rn rn UnhookWindowsHookEx(ghMouseHook);rn ghMouseHook = NULL;rn rn break;rn rn return TRUE;rnrnrnLRESULT CALLBACK MyHookProc(int aiCode ,WPARAM wParam,LPARAM lParam)rnrn if(aiCodehwnd;rn gi_MousePosX = lpMouse->pt.x;rn gi_MousePosY = lpMouse->pt.y;rn rn return CallNextHookEx(ghMouseHook,aiCode,wParam,lParam);rnrnrnVOID CALLBACK TimerFunc(HWND wHwnd,UINT uMsg,UINT dEvent,DWORD dwTime)rnrn KillTimer(NULL,gu_TimerID);rn gu_TimerID = NULL;rn POINT lp;rn lp.x = gi_MousePosX;rn lp.y = gi_MousePosY;rn ScreenToClient(gh_MouseWnd,&lp);rn RECT rect;rn rect.left = gi_MousePosY - 1;rn rect.right = gi_MousePosY + 1;rn rect.top = gi_MousePosX - 1;rn rect.bottom = gi_MousePosX +1;rn InvalidateRect(gh_MouseWnd,&rect,TRUE); rn rnrnrnextern "C" void SetWindowHandle(HWND ahWnd)rnrn ghWnd = ahWnd;rnrnrnextern "C" int StartGetWord()rnrn ghMouseHook = SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MyHookProc,ghInstance,0);rn if(ghMouseHook == NULL)rn return 1;rn gu_TimerID = SetTimer(NULL,0,1000,(TIMERPROC)TimerFunc);rn return 0;rnrnrnextern "C" int StopGetWord()rnrn if(ghMouseHook != NULL)rn rn UnhookWindowsHookEx(ghMouseHook);rn ghMouseHook = NULL;rn rn if(gu_TimerID != NULL)rn rn KillTimer(NULL,gu_TimerID);rn gu_TimerID = NULL;rn rn return 0;rnrnrnVOID ModifyIAT(HMODULE hmodCaller,LPCSTR szDllName,PROC pfnOrg,PROC pfnNew)rnrn PIMAGE_THUNK_DATA pITD;rn char * lpTemp;rn int liRet;rn ULONG ulSize;rn //对每一个用到的dll,在输入表中都用一个IMAGE_IMPORT_DESCRIPTOR类型的rn //结构体保存该dll的信息rn PIMAGE_IMPORT_DESCRIPTOR pIID;rn //用ImageDirectoryEntryToData可以取得输入表中的第一项rn //参数IMAGE_DIRECTORY_ENTRY_IMPORT指明要取得输入表,而不是其他表rn pIID =(PIMAGE_IMPORT_DESCRIPTOR)ImageDirectoryEntryToData(hmodCaller,TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT,&ulSize);rn //如果pIID为NULL,表示该模块没有输入表,返回rn if( !pIID )rn return;rn //IMAGE_IMPORT_DESCRIPTOR有一个Name的成员,该成员是dll名字的RVArn //hmodCaller实质是模块映射到进程空间中的基地址,通过将它转换为PBYTE类型,rn //再加上Name这个RVA就可以得到这项IMAGE_IMPORT_DESCRIPTOR记录的dll的名字rn //将这个名字与我们要挂接的dll的名字比较rn //如果两个名字不同,则pIID++取下一项IMAGE_IMPORT_DESCRIPTORrn for(; pIID->Name; pIID++)rn rn lpTemp = MakePtr(PSTR,hmodCaller,pIID->Name);rn if( !lstrcmpiA( szDllName,lpTemp))rn break;rn rn //如果遍历完所有dll都没有找到我们要挂接的dll,则返回rn if( !pIID->Name )rn return;rn //可以从一个dll中输入多个<em>函数</em>.对每一个输入的<em>函数</em>,用一个IMAGE_THUNK_DATArn //结构体保存它的信息.在IMAGE_IMPORT_DESCRIPTOR中,有一个FirstThunk成员记录着rn //第一个IMAGE_THUNK_DATA(这个IMAGE_THUNK_DATA保存着第一个输入<em>函数</em>的信息)的RVArn //我们用与取得dll名字一样的方法(基址+RVA)取得这个IMAGE_THUNK_DATArn pITD = MakePtr(PIMAGE_THUNK_DATA,hmodCaller,pIID->FirstThunk);rn //IMAGE_THUNK_DATA有一个ul成员,它是一个共同体.通过这个共同体的Function成员,我们rn //可以得到输入<em>函数</em>在进程空间中的真实地址rn //将这个真实地址和我们要挂接的<em>函数</em>的地址比较,如果相同,则修改rn //否则pITD++取下一个输入<em>函数</em>的信息rn for(; pITD->u1.Function ; pITD++)rn rn PROC* ppfn = (PROC*)&pITD->u1.Function;rn if( *ppfn == pfnOrg )rn rn WriteProcessMemory(GetCurrentProcess(),ppfn,&pfnNew,sizeof(PROC),NULL);rn return;rn rn rnrnrnVOID ModifyIATs(LPCSTR szDllName,PROC pfnOrg,PROC pfnNew)rn BOOL fOk = FALSE;rn MODULEENTRY32 me32;rn HANDLE hSnapshot;rn hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,GetCurrentProcessId());rn me32.dwSize = sizeof( me32 );rn //枚举当前进程的全部模块rn for( fOk = Module32First( hSnapshot,&me32 ); fOk ; fOk = Module32Next(hSnapshot,&me32))rn if( me32.hModule != ghInstance )rn ModifyIAT(me32.hModule,szDllName,pfnOrg,pfnNew);rn rn rn CloseHandle( hSnapshot );rnrnrnrnBOOL WINAPI Hook_TextOutA(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString, int cbString)rnrn COPYDATASTRUCT MyCDS;rn MyCDS.dwData = 0X002; rn MyCDS.cbData = cbString; rn MyCDS.lpData = (PVOID )lpszString; rn ::SendMessage(ghWnd,WM_COPYDATA,(WPARAM)WindowFromDC(hdc),(LPARAM)(LPVOID)&MyCDS);rn return TextOutA(hdc,nXStart,nYStart,lpszString,cbString);rn
为何行句柄无效
我用Ado的RecordSet的方法操作数据库rnrsAdo.deleternrsado.updatebatchrn可以删除行,却每次报告“行<em>句柄</em><em>无效</em>”rn请各位帮忙
FindFirstFile 返回句柄无效
#include "stdafx.h"rn#include "iostream"rn#include "windows.h"rn#define MAX_PATH 300rnusing namespace std;rnvoid MyFindFile1(LPCTSTR lpPath);rnrnint _tmain(int argc, _TCHAR* argv[])rnrn const char *str = "D:\\test";rn LPCTSTR lpPath = (LPCTSTR)str;rn MyFindFile1(lpPath);rnrn system("Pause");rn return 0;rnrnvoid MyFindFile1(LPCTSTR lpPath)rnrn TCHAR MFind[MAX_PATH] = _T("\0");rn WIN32_FIND_DATA findFileDate ;rn bool bRet;rnrn _tcscpy_s(MFind,MAX_PATH,lpPath);rn _tcscat_s(MFind,_T("\\*.*"));rn printf("%\s\n",MFind); rnrn HANDLE hFind = ::FindFirstFile(MFind, &findFileDate);rn if(INVALID_HANDLE_VALUE == hFind)rn rn printf("<em>无效</em><em>句柄</em>!\n");rn return;rn rn elsern rn printf("<em>句柄</em>有效\n");rn rnrnrn始终是输出<em>无效</em><em>句柄</em>,我已经在D:\\test中建立了一些文件和文件夹。
readfile句柄无效
void CXCHANGEDlg::OnBtnPreview() rnrn filter = "All Files(*.*)|*.*||";rn CFileDialog Dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter);rnrn if (Dlg.DoModal() == IDOK)rn rn CString str = Dlg.GetPathName();rn CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_FILEPATH);rn pEdit->SetWindowText(str);rnrn oRead.Offset =0;rnrn szReadBuff = (char*) malloc (sizeof(char)*10240);rn if (szReadBuff == NULL)rn rn rn DWORD ErrorCode = GetLastError();rn itoa(ErrorCode, szErrorCode, 10);rn rn MessageBox(szErrorCode, "Error", MB_OK);rn rnrn handle = CreateFile(str, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);rn if (INVALID_HANDLE_VALUE == handle)rn rn MessageBox("Read Error", NULL, MB_OK);rn return;rn rnrn rn if (!(ReadFile(handle, szReadBuff, 10, NULL, &oRead)))rn rn memset(szErrorCode, 0, sizeof(szErrorCode));rnrn DWORD ErrorCode = GetLastError();rn itoa(ErrorCode, szErrorCode, 10);rnrn MessageBox(szErrorCode, "Error", MB_OK);rn rnrn为什么readfile提示<em>句柄</em><em>无效</em>错误,,并且szReadBuff中为空
串口通信,句柄无效
rn写了一个串口通信软件。底层用的是MFC,顶层用的是Qt的构架。rn问题:rnQt创建了两个UI界面A、B。在A的<em>函数</em>里设置端口号及波特率,串口可以正常打开,并且可以收发数据。但B的<em>函数</em>里收发数据时出现<em>句柄</em><em>无效</em>(hComm==INVALID_HANDLE_VALUE)。rn同样在B里的<em>函数</em>里设置端口号及波特率,串口可以正常打开,并且可以收发数据。但A的<em>函数</em>里收发数据时出现<em>句柄</em><em>无效</em>(hComm==INVALID_HANDLE_VALUE)。 rn什么原因啊。我对语言不是很了解。该怎么解决,
关于pb7调用API函数的问题
rn AddPrinterConnection 这个<em>函数</em>在PB7下 怎么<em>调用</em>,声明,如果可以使用在WIN98和WIN2000 、WINXP下使用有区别吗?
关于CreateProcess() 这个API函数调用
大家好 请帮帮我 我想<em>调用</em>CreateProcess()这个API 用它来启动另一程序 比如说 B.EXE 但是这个B.EXE需要一个参数 比如说 127.0.0.1 :8080 这个的参数 (一个IP和一个端口) 怎么<em>调用</em>呀 给个实例 谢谢了
关于C#中调用API函数的疑点????
<em>关于</em>C#中<em>调用</em>API<em>函数</em>的疑点????rn 在<em>调用</em>有不同参数的<em>函数</em>时如:SetWindowPos(Long hwnd ,Long hWndInsertAfter , Long x ,Longy , Long cx , Long cy , Long wFlags )rn其hWndInsertAfter参数有HWND_BOTTOM, HWND_TOP, HWND_TOPMOST HWND_NOTOPMOST的选者,但是怎样确定这些参数的值呢,那些是0,1,2呢。rn还是在程序中直接使用这些字符参数,请示教!!!1
关于调用api函数时的一个小问题
在<em>调用</em>时,有时候会在之前加入这么一句话:[StructLayout(LayoutKind.Sequential, Pack = 1)].我知道这是让下面所定义的结构中的结构成员按顺序排列.但是这里的pack=1是什么意思?查msdn的时候没看懂...谢谢
一个关于在MFC下调用API函数的问题
我用MFC编了一个程序,里面要<em>调用</em>到很多自己编的程序,而我的程序里又包含了很多API<em>函数</em>,是不是只要把我的头文件.h和源文件.cpp加入工程就行了,在头文件里是不是要写清楚API<em>函数</em>的来源,如:#include " ",这些API<em>函数</em>的来源可以怎样更好地找呢?是不是还有其他步骤要做呢?
关于api函数GetWindowRect的调用问题。
我<em>调用</em>GetWindowRect( Frm, rcCurrent ),返回值为1,也就是说成功,frm为<em>调用</em>该<em>函数</em>的一个窗口的handle,handle值也绝对没有错误,但是结果却无法把窗口的大小位置传给rcCurrent,即rcCurrent.right,rcCurrent.left,rcCurrent.top,rcCurrent.bottom都是零。rnrn我不知道哪里出了问题,希望能得到大家的帮助。rn谢谢了!
关于C#调用API ProcessIdToSessionId函数的问题
代码如下:rn[DllImport("kernel32")]rnprivate static extern bool ProcessIdToSessionId(int pid,int sid);rnrn我用远程桌面控制另一台机器,然后在另一台机器里打开了一个应用程序.rn在任务管理器里看,这个应用程序的会话ID是1,即远程会话.rn但是,我<em>调用</em>ProcessIdToSessionId<em>函数</em>,它始终返回false,sid的值也始终是0.rn系统都是Windows 2003rn请大侠帮忙看看..
关于C#调用API函数FindWindow问题
在C#中使用API<em>函数</em>FINDWINDOW查找窗体遇到如下:rnusing System.Runtime.InteropServices; //这个肯定要的rnrnDll Import#region Dll Import rn rn [DllImport("User32.dll",EntryPoint="FindWindow")] rn private static extern IntPtr FindWindow(string lpClassName, rnstring lpWindowName); rn rn [DllImport("user32.dll",EntryPoint="FindWindowEx")] //找子窗体rn private static extern IntPtr FindWindowEx(IntPtr hwndParent, rnIntPtr hwndChildAfter, string lpszClass, string lpszWindow); rn rn [DllImport("User32.dll",EntryPoint="SendMessage")] //用于发送信息给窗体rn private static extern int SendMessage(IntPtr hWnd, rnint Msg, IntPtr wParam, string lParam); rn rn #endregion rn//这个是DLL导入rn private int SearchWindow() rn rn string lpszParentClass = "#32770"; //整个窗口的类名 rn string lpszParentWindow = "保存网页"; //窗口标题 rn string Save_Submit = "Button"; //需要查找的Button的类名 rn string Save_type="Edit";rn string text = ""; rn rn IntPtr ParenthWnd = new IntPtr(0); rn IntPtr EdithWnd = new IntPtr(0); rn rn //查到窗体,得到整个窗体 rn ParenthWnd = FindWindow(lpszParentClass,lpszParentWindow); rn rn //判断这个窗体是否有效 rn if (!ParenthWnd.Equals(IntPtr.Zero)) rn rn MessageBox.show("保存网页对话框存在");rn elsern MessageBox.show("保存网页对话框不存存在");rn //得到User Name这个子窗体,并设置其内容 rn EdithWnd = FindWindowEx(ParenthWnd,EdithWnd,Save_Submit,""); //获取button<em>句柄</em>rn if(!EditWnd.Equals(IntPtr.Zero))rn MessageBox.show("保存按扭存在"); rn elsern MessageBox.show("保存按扭不存在");rn EdithWnd = FindWindowEx(ParenthWnd,EdithWnd,Save_type,""); //获取button<em>句柄</em>rn if(!EditWnd.Equals(IntPtr.Zero))rn MessageBox.show("文件类型框存在"); rn elsern MessageBox.show("文件类型框不存在");rnrn先打开一个网页保存对话框,然后运行程序rnprivate void button1_Click(object sender, System.EventArgs e)rnSearchWindow() ;rnrn我本想获取保存按扭的<em>句柄</em>,然后用SENDMESSAGE发送信息给它rn但用测试时保存网页对话框打开时,显示rn保存网页对话框存在rn保存按扭不存在rn文件类型框存在 rnrn也就是只能获保存网页对话框各对话框中其它按扭的的那个<em>句柄</em>,而不能获取BUTTON的<em>句柄</em>,用SPY++查看,保存按扭和文件类型的父类又是保存对话框,但就是不能获取BUTTON的<em>句柄</em>,而其它对话框都行。那位高手能告诉我吗?万分感谢。rn
C#:关于调用API函数的问题!!!请教。。。。
<em>关于</em><em>调用</em>API<em>函数</em>的问题!!!请教。。。。rnrnC#在<em>调用</em>API<em>函数</em>时,是不是一定要知道其*.dll文件?rnrn通过MSDN,我只能查到其头文件*.h,怎么通过*.h文件查到*.dll文件?rnrn比如FindWindow,其头文件:Winuser.h;库文件:user32.lib; 怎么知道其dll文件?
关于PB调用API函数FindFirstFile的问题
为什么在PB中定义FUNCTION ulong FindFirstFile(ref string lpFileName,ref WIN32_FIND_DATA lpFindFileData) LIBRARY "kernel32.dll" ALIAS FOR "FindFirstFileA"时,为什么提示Illegal data type:WIN32_FIND_DATA 错误,那么应该如何处理这样的变量类型呢?
c#中关于API函数调用
using System;rnusing System.Runtime.InteropServices;rnnamespace MCPR.TestToolrnrn /// rn /// Summary description for IAPICaller.rn /// rn abstract class IAPICallerrn rn /// rn /// The main entry point for the application.rn /// rn public IAPICaller(string strFuncName)rn rn m_strFuncName = strFuncName;rn rnrn public virtual int DisplayResult(object[] obaParam)rn rn System.Console.WriteLine("IAPICaller.DisplayResult");rn return 0;rn rnrn private string m_strFuncName;rn public string FuncNamern rn get return m_strFuncName; rn rnrn private object[] m_objParam;rn public object[] Paramrn rn get return m_objParam; rn set m_objParam = (object[])(value).Clone();rn rn rn class CCallAPIrn rn public CCallAPI()rn public int CallAPI(IAPICaller aCaller)rn rn if(aCaller.FuncName.Length + aCaller.FuncName);rnrn object[] objaReturn = new object[3];rn objaReturn[0] = (object)0;rn objaReturn[1] = (object)1;rn objaReturn[2] = (object)2;rn //==========================YOU CAN MODIFY THIS FOR CALL API==============rnrn aCaller.DisplayResult(objaReturn);rn return 0;rn rn rnrn我要在注释的部分编写代码:<em>调用</em><em>api</em><em>函数</em>,<em>函数</em>是自己定义的,应该怎么做rn由老师指点一下么?rn
CreateProcess WaitForSingleObject 句柄无效
[url=http://blog.csdn.net/zhengzhiren/article/details/4540768]参照这里的代码[/url]rn我依照上面的代码,可以在纯C++下,完成启动一个进程,并等待它结束的功能。但是,同样的代码,放在MFC里rnrnCreateProcess 用来启动一个进程,已经启动成功了。并同时得到一个进程信息的参数。rnrnPROCESS_INFORMATION ProcessInfo;我看了,ProcessInfo里面是有值的。rnrn但是在执行WaitForSingleObject(&ProcessInfo.hProcess, INFINITE);的时候返回了WAIT_FAILED,我通过GetLastError,得到的错误值是6,也就是"<em>句柄</em><em>无效</em>"rnrnrn这是怎么回事呢?
为什么句柄无效
if(! ::CreateProcess(NULL, "D:\\hbbianyi\\masm\\masm.exe", NULL, NULL, TRUE, 0, NULL, NULL, &m_si, &m_pi))rn rn MessageBox("创建进程失败!!");rn return;rn rn ::CloseHandle(m_hWrite);rnrn 为什么 <em>句柄</em><em>无效</em>???rn如何创造16位<em>句柄</em> 的 管道??能创造吗??
句柄无效是什么原因?
BOOL SetWindowShapeTime()rnrn HBITMAP hBitmap;rn hBitmap = LoadBMPImage(hWnd,szFileName);rn DeleteObject(hBitmap);rnrn该<em>函数</em>每秒执行一次.运行了几个小时以后会出现<em>句柄</em><em>无效</em>的错误,rnhBitmap的值一直都是0x00000000,然后调试窗口提示<em>句柄</em><em>无效</em>,rn查看任务管理器,程序内存占用明显变大(原来是5MB,2小时后可以升高到19MB)rnrn请问是怎么回事?rnrnrn
windows下删除“无效句柄
1. 背景删除windows桌面的文件,可能文件系统出错,导致第一次删除时没有完全删除文件,但是,再次删除时,总提示“文件<em>句柄</em><em>无效</em>”,强迫症如我,不能容许这样一个无用图标,所以,一定要删除。 2. 方法Step1: 借助WinRAR软件,右键点击要删除的文件夹,选择“添加到压缩文件”。 在弹出的对话框中选中“压缩后删除源文件”,点击确定,等待压缩完成。Step2: 此时,源文件被删除,再将压缩包正...
.net句柄无效
 把VS关闭,重新打开一下试试,就好啦。
细细品味C#(Remoting专题)下载
什么是 Remoting,简而言之,我们可以将其看作是一种分布式处理方式。从微软的产 品角度来看,可以说 Remoting 就是 DCOM 的一种升级,它改善了很多功能,并极好的融合 到.Net 平台下。Microsoft? .NET Remoting 提供了一种允许对象通过应用程序域与另一对象 进行交互的框架。 这也正是我们使用 Remoting 的原因。 为什么呢?在 Windows 操作系统中, 是将应用程序分离为单独的进程。 这个进程形成了应用程序代码和数据周围的一道边界。 如 果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是 一种操作系统对应用程序的 相关下载链接:[url=//download.csdn.net/download/tonyzhang1995/3954467?utm_source=bbsseo]//download.csdn.net/download/tonyzhang1995/3954467?utm_source=bbsseo[/url]
JavaScript+DHTML语法与范例详解词典下载
JavaScript+DHTML语法与范例详解词典 相关下载链接:[url=//download.csdn.net/download/jch122291000/4205872?utm_source=bbsseo]//download.csdn.net/download/jch122291000/4205872?utm_source=bbsseo[/url]
android 小米UI 自定义音量下载
此自定义音量可以移植到android 原生系统中修改原生系统中的音量组件 相关下载链接:[url=//download.csdn.net/download/yuzhongrong/6634943?utm_source=bbsseo]//download.csdn.net/download/yuzhongrong/6634943?utm_source=bbsseo[/url]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数
我们是很有底线的