一个Online Judge的东西,在线判断用户提交的程序是否符合题目要求。
得用调用Win32 API,给另外一个win32 app发消息,告诉他有人提交了source code让他去编译,处理,判断输出结果是否正确。
我晕了,又得用P/Invoke,这个东西真是,书上说的都挺简单,什么参数类型对应什么参数类型,可到时候真要用哪个API就不知道怎么写了。
憋了半天,总算憋出来了。
[color=#0000D0]using[/color] System;
[color=#0000D0]using[/color] System.Runtime.InteropServices;
[color=#0000D0]namespace[/color] EJudge
{
[color=#008000]/// <summary>[/color]
[color=#008000]/// Win32 API Wrapper![/color]
[color=#008000]/// By K-Res[/color]
[color=#008000]/// </summary>[/color]
[color=#0000D0]public[/color] [color=#0000D0]class[/color] CWinAPI
{
[color=#0000D0]public[/color] CWinAPI()
{
[color=#008000]//[/color]
[color=#008000]// TODO: Add constructor logic here[/color]
[color=#008000]//[/color]
}
[color=#008000]//导入MessageBox函数[/color]
[DllImport([color=#808080]”user32.dll”[/color], EntryPoint=[color=#808080]”MessageBox”[/color])]
[color=#0000D0]public[/color] [color=#0000D0]static[/color] [color=#0000D0]extern[/color] [color=#0000D0]int[/color] MsgBox([color=#0000D0]int[/color] hWnd, String text, String caption, uint type);
[color=#008000]//PostMessage函数,给处理代码程序发送消息,有事要做啦[/color]
[DllImport([color=#808080]”User32.dll”[/color],EntryPoint=[color=#808080]”PostMessage”[/color])]
[color=#0000D0]public[/color] [color=#0000D0]static[/color] [color=#0000D0]extern[/color] [color=#0000D0]int[/color] [b][color=#000080]PostMessage[/color][/b]
(
[color=#0000D0]int[/color] hWnd, [color=#008000]// handle to destination window[/color]
[color=#0000D0]int[/color] Msg, [color=#008000]// message[/color]
[color=#0000D0]int[/color] wParam, [color=#008000]// first message parameter[/color]
[color=#0000D0]int[/color] lParam [color=#008000]// second message parameter[/color]
);
[color=#008000]//FindWindow函数,查找处理程序窗口,从而发消息[/color]
[DllImport([color=#808080]”User32.dll”[/color],EntryPoint=[color=#808080]”FindWindow”[/color])]
[color=#0000D0]public[/color] [color=#0000D0]static[/color] [color=#0000D0]extern[/color] [color=#0000D0]int[/color] [b][color=#000080]FindWindow[/color][/b]([color=#0000D0]string[/color] lpClassName,[color=#0000D0]string[/color] lpWindowName);
[color=#008000]//定义消息常数[/color]
[color=#0000D0]public[/color] [color=#0000D0]const[/color] [color=#0000D0]int[/color] WM_USER = 0x400;
[color=#0000D0]public[/color] [color=#0000D0]const[/color] [color=#0000D0]int[/color] WM_SRCINCOMING = WM_USER + 256;
}
}
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。