189 8069 5689

c语言函数fun定义,c语言的fun函数

vb.net 如何强制终止子线程?

使用api

创新互联建站专业为企业提供西畴网站建设、西畴做网站、西畴网站设计、西畴网站制作等企业网站建设、网页设计与制作、西畴企业网站模板建站服务,十多年西畴做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long

大神你们好,请帮我看一下这段vb.net的 Invoke代码是什么意思...

其实这行代码和C_RunCompleted(image, Nothing)的效果类似,但在BackgroundWorker中解决了“线程安全”的问题。

你可以把多线程看成几个工人同时干活。如果大家都共用一份材料,然后我给它补一块,你给它割一块,他再把其它材料焊上去,岂不是乱套了?Invoke的作用就是用一个线程模型调用方法,让主线程先放一边,这样就不会乱套了,也就是“线程安全”。你试试直接改成上面的代码,运行时会引发跨线程异常

vb.net中怎么样声明FindWindow和GetWindowThreadProcessId方法啊?还有“user32.dll”里面的方法能查看吗

Declare Function FindWindow Lib "user32" Alias "FindWindowA" 

(ByVal lpClassName As String, ByVal lpWindowName As String) As Int32

Declare Function GetWindowThreadProcessId Lib "user32" Alias 

"GetWindowThreadProcessId" (ByVal hwnd As Int32, lpdwProcessId As Int32) As 

Int32

跟 VB6 里的声明没什么区别,只不过 Long 要变成 Int32 而已。

user32.dll 是 Windows 用户界面相关应用程序接口,用于包括 Windows 处理,基本用户界面等特性,如创建窗口和发送消息。所以和这些相关的 API 都封装在这里。但并不是所有的接口都对用户开放了,只开放了部分,也就是在编程中能调用的 API,所以要查看起来的话不容易。

vb.net中如何设置进程的基本优先级

下面的代码示例说明了更改线程优先级的结果。创建两个线程,其中一个线程的优先级设置为 BelowNormal。两个线程在 while 循环中都增加一个变量,并运行一段设定的时间。

Option Explicit

Option Strict

Imports System

Imports System.Threading

Public Class Test

MTAThread _

Shared Sub Main()

Dim priorityTest As New PriorityTest()

Dim threadOne As Thread = _

New Thread(AddressOf priorityTest.ThreadMethod)

threadOne.Name = "ThreadOne"

Dim threadTwo As Thread = _

New Thread(AddressOf priorityTest.ThreadMethod)

threadTwo.Name = "ThreadTwo"

threadTwo.Priority = ThreadPriority.BelowNormal

threadOne.Start()

threadTwo.Start()

' Allow counting for 10 seconds.

Thread.Sleep(10000)

priorityTest.LoopSwitch = False

End Sub

End Class

Public Class PriorityTest

Dim loopSwitchValue As Boolean

Sub New()

loopSwitchValue = True

End Sub

WriteOnly Property LoopSwitch As Boolean

Set

loopSwitchValue = Value

End Set

End Property

Sub ThreadMethod()

Dim threadCount As Long = 0

While loopSwitchValue

threadCount += 1

End While

Console.WriteLine("{0} with {1,11} priority " _

"has a count = {2,13}", Thread.CurrentThread.Name, _

Thread.CurrentThread.Priority.ToString(), _

threadCount.ToString("N0"))

End Sub

End Class

vb.net 获取键盘输入的字符

参考方法如下,具体解释已经注解在代码中;

/定义变量

public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);

static int hKeyboardHook = 0;

HookProc KeyboardHookProcedure;

/*************************

* 声明API函数

* ***********************/

// 安装钩子 (using System.Runtime.InteropServices;)

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]

public static extern int SetWindowsHookEx(int idHook,HookProc lpfn, IntPtr hInstance, int threadId);

// 卸载钩子

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]

public static extern bool UnhookWindowsHookEx(int idHook);

// 继续下一个钩子

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]

public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);

// 取得当前线程编号(线程钩子需要用到)

[DllImport("kernel32.dll")]

static extern int GetCurrentThreadId();

//钩子子程:就是钩子所要做的事情

private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)

{

if (nCode = 0)

{

/****************

//线程键盘钩子判断是否按下键

Keys keyData = (Keys)wParam;

if(lParam.ToInt32() 0)

{

// 键盘按下

}

if(lParam.ToInt32() 0)

{

// 键盘抬起

}

****************/

/****************

//全局键盘钩子判断是否按下键

wParam = = 0x100 // 键盘按下

wParam = = 0x101 // 键盘抬起

****************/

KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));//键盘

// 在这里添加你想要做是事情(比如把键盘nCode记录下来,搞个邮件发送程序发到自己的邮箱去)

return 0;//如果返回1,则结束消息,这个消息到此为止,不再传递。如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者

}

return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

}

//键盘结构

public struct KeyMSG

{

public int vkCode; //键值

public int scanCode;

public int flags;

public int time;

public int dwExtraInfo;

}

// 安装钩子

public void HookStart()

{

if(hKeyboardHook == 0)

{

// 创建HookProc实例

KeyboardHookProcedure = new HookProc(KeyboardHookProc);

// 设置线程钩子

hKeyboardHook = SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);

//************************************

//键盘线程钩子

//SetWindowsHookEx( 2,KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId()); //GetCurrentThreadId()为要监视的线程ID,你完全可以自己写个方法获取QQ的线程哦

//键盘全局钩子,需要引用空间(using System.Reflection;)

//SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);

//

//关于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函数将钩子加入到钩子链表中,说明一下四个参数:

//idHook 钩子类型,即确定钩子监听何种消息,上面的代码中设为2,即监听键盘消息并且是线程钩子,如果是全局钩子监听键盘消息应设为13,

//线程钩子监听鼠标消息设为7,全局钩子监听鼠标消息设为14。

//

//lpfn 钩子子程的地址指针。如果dwThreadId参数为0 或是一个由别的进程创建的线程的标识,lpfn必须指向DLL中的钩子子程。 除此以外,lpfn可

//以指向当前进程的一段钩子子程代码。钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数。

//

//hInstance应用程序实例的句柄。标识包含lpfn所指的子程的DLL。如果threadId 标识当前进程创建的一个线程,而且子程代码位于当前

//进程,hInstance必须为NULL。可以很简单的设定其为本应用程序的实例句柄。

//

//threadedId 与安装的钩子子程相关联的线程的标识符。如果为0,钩子子程与所有的线程关联,即为全局钩子。

//************************************

// 如果设置钩子失败

if(hKeyboardHook == 0 )

{

HookStop();

throw new Exception("SetWindowsHookEx failed.");

}

}

}

// 卸载钩子

public void HookStop()

{

bool retKeyboard = true;

if(hKeyboardHook != 0)

{

retKeyboard = UnhookWindowsHookEx(hKeyboardHook);

hKeyboardHook = 0;

}

if (!( retKeyboard))

throw new Exception("UnhookWindowsHookEx failed.");

}

Vb.net中已知某程序的进程id,如果激活该程序并最大化?

使用ShowWindow函数,便可轻松控制窗口的显隐,最小化,最大化。

概述

函数功能:该函数设置指定窗口的显示状态。

函数原型:BOOL ShowWindow(HWND hWnd, int nCmdShow);

*/第一个参数为句柄,第二个参数选下面的值

#define SW_HIDE 0

#define SW_SHOWNORMAL 1

#define SW_NORMAL 1

#define SW_SHOWMINIMIZED 2

#define SW_SHOWMAXIMIZED 3

#define SW_MAXIMIZE 3

#define SW_SHOWNOACTIVATE 4

#define SW_SHOW 5

#define SW_MINIMIZE 6

#define SW_SHOWMINNOACTIVE 7

#define SW_SHOWNA 8

#define SW_RESTORE 9

#define SW_SHOWDEFAULT 10

#define SW_FORCEMINIMIZE 11

#define SW_MAX 11

参数含义

hWnd:指窗口句柄。

nCmdShow:指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一:

SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。

SW_HIDE:隐藏窗口并激活其他窗口。

SW_MAXIMIZE:最大化指定的窗口。

SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。

SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。

SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。

SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。

SW_SHOWMAXIMIZED:激活窗口并将其最大化。

SW_SHOWMINIMIZED:激活窗口并将其最小化。

SW_SHOWMINNOACTIVATE:窗口最小化,激活窗口仍然维持激活状态。

SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。

SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。

SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。

不过顺便说一句,SendKeys会偶尔造成指令丢失,不可避免。不管你激活窗口还是最大化窗口或者锁定都没办法完全避免。


文章标题:c语言函数fun定义,c语言的fun函数
标题路径:http://cdxtjz.cn/article/hcpgpj.html

其他资讯