急!急!急!帮我把这VB语言翻译成C#

jsonzbc 2010-11-19 03:14:31
Option Explicit

'API Constants
Const SMTO_BLOCK = &H1
Const SMTO_ABORTIFHUNG = &H2
Const WM_NULL = &H0
Const WM_CLOSE = &H10
Const PROCESS_ALL_ACCESS = &H1F0FFF
'API functions
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, _
lpdwProcessId As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" _
(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As _
Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long

Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
ByVal uExitCode As Long) As Long

Private modObjIE As Object
Private modlngWndIE As Long

Private Sub cmdCheck_Click()
Dim lngResult As Long
Dim lngReturnValue As Long
lngReturnValue = SendMessageTimeout(modlngWndIE, WM_NULL, 0&,
0&, SMTO_ABORTIFHUNG And SMTO_BLOCK, 1000, lngResult)
If lngReturnValue Then
MsgBox "Responding"
Else
MsgBox "Not Responding","Block tester"
End If
End Sub

Private Sub cmdLaunch_Click()
Set modObjIE = Nothing
Set modObjIE = CreateObject("InternetExplorer.Application")
modObjIE.Visible = True
modObjIE.Navigate2 "http://www.microsoft.com"
modlngWndIE = modObjIE.hwnd
End Sub

Private Sub cmdKill_Click()
Dim lngProcessID As Long
Dim lngReturnValue As Long
Dim lngProcess As Long
lngReturnValue = GetWindowThreadProcessId(modlngWndIE, lngProcessID)
lngProcess = OpenProcess(PROCESS_ALL_ACCESS, 0&, lngProcessID)
lngReturnValue = TerminateProcess(lngProcess, 0&)
End Sub




翻译好的可以加分
下面是源代码地址:http://support.microsoft.com/kb/231844
...全文
141 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuqingpo 2010-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zenghd 的回复:]

C# code

引用Microsoft Internet Controls

using System;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
public parti……
[/Quote]
好人呀!
ZengHD 2010-11-19
  • 打赏
  • 举报
回复

引用Microsoft Internet Controls

using System;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private IntPtr modlngWndIE = IntPtr.Zero;

private uint WM_NULL = 0x0;

[DllImport("user32.dll", SetLastError = true)]
private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

[DllImport("kernel32.dll")]
private static extern IntPtr OpenProcess(ProcessAccessTypes dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwProcessId);

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr SendMessageTimeout(
IntPtr hWnd,
uint Msg,
UIntPtr wParam,
IntPtr lParam,
SendMessageTimeoutFlags fuFlags,
uint uTimeout,
out UIntPtr lpdwResult);

private enum ProcessAccessTypes
{
PROCESS_TERMINATE = 0x00000001,
PROCESS_CREATE_THREAD = 0x00000002,
PROCESS_SET_SESSIONID = 0x00000004,
PROCESS_VM_OPERATION = 0x00000008,
PROCESS_VM_READ = 0x00000010,
PROCESS_VM_WRITE = 0x00000020,
PROCESS_DUP_HANDLE = 0x00000040,
PROCESS_CREATE_PROCESS = 0x00000080,
PROCESS_SET_QUOTA = 0x00000100,
PROCESS_SET_INFORMATION = 0x00000200,
PROCESS_QUERY_INFORMATION = 0x00000400,
STANDARD_RIGHTS_REQUIRED = 0x000F0000,
SYNCHRONIZE = 0x00100000,
PROCESS_ALL_ACCESS = PROCESS_TERMINATE | PROCESS_CREATE_THREAD | PROCESS_SET_SESSIONID | PROCESS_VM_OPERATION |
PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_DUP_HANDLE | PROCESS_CREATE_PROCESS | PROCESS_SET_QUOTA |
PROCESS_SET_INFORMATION | PROCESS_QUERY_INFORMATION | STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE
}

[Flags]
enum SendMessageTimeoutFlags : uint
{
SMTO_NORMAL = 0x0,
SMTO_BLOCK = 0x1,
SMTO_ABORTIFHUNG = 0x2,
SMTO_NOTIMEOUTIFNOTHUNG = 0x8
}

private void button1_Click(object sender, EventArgs e)
{
//InternetExplorer.Application"
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
ie.Navigate2("http://www.microsoft.com");
ie.Visible = true;
modlngWndIE = (IntPtr)ie.HWND;
}

private void button2_Click(object sender, EventArgs e)
{
uint lngProcessID = 0;
uint lngReturnValue = 0;
IntPtr lngProcess = IntPtr.Zero;

lngReturnValue = GetWindowThreadProcessId(modlngWndIE, out lngProcessID);
lngProcess = OpenProcess(ProcessAccessTypes.PROCESS_ALL_ACCESS, false, lngProcessID);
TerminateProcess(lngProcess, 0);
}

private void button3_Click(object sender, EventArgs e)
{
UIntPtr lngResult = UIntPtr.Zero;
IntPtr lngReturnValue = IntPtr.Zero;
lngReturnValue = SendMessageTimeout(modlngWndIE, WM_NULL, UIntPtr.Zero, IntPtr.Zero, SendMessageTimeoutFlags.SMTO_ABORTIFHUNG | SendMessageTimeoutFlags.SMTO_BLOCK, 1000, out lngResult);
if (lngReturnValue != IntPtr.Zero)
{
MessageBox.Show("Responding");
}
else
{
MessageBox.Show("Not Responding");
}
}
}
}
兔子-顾问 2010-11-19
  • 打赏
  • 举报
回复
重新实现比翻译来的快。
jsonzbc 2010-11-19
  • 打赏
  • 举报
回复
不要跟我说在那个翻译网站上翻译,那个不准,我要会VB的人来翻译...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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