湖南省医保系统需要重复的使用不同的帐号登陆,于是写了这么一个小程序。
使用VC2008 MFC开发。
下面是核心的代码,大家自己加入到程序中去。
1.在类中添加函数声明和变量
public:
void AutoLogin(void); //自动登陆
void SendKeys(CString msg); //发送按键
void SendAscii(wchar_t data, BOOL shift); //发送英文字符
void SendUnicode(wchar_t data); //发送Unicode
CString szpath; //存储exe路径的变量
2.添加或者编辑函数
BOOL CXXXDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer();
int nPos;
nPos=sPath.ReverseFind("\\");
sPath=sPath.Left(nPos);
szpath.Format("%s\\农合系统.exe",sPath);
AutoLogin();
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CXXXDlg::AutoLogin(void)
{
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));//初始化si在内存块中的值(详见memset函数)
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;//必备参数设置结束
CWnd *hwnd=0;
if(!CreateProcess(NULL,szpath.GetBuffer(MAX_PATH),NULL, NULL,FALSE,0,NULL,NULL,&si,&pi))
{
AfxMessageBox("调用 沅陵县农村合作医疗管理系统 失败!");
}
else
{
TRACE("Success!");
CString sz_WndTxt;
//Radmin security:
int i=0;
while(!hwnd)
{
sz_WndTxt="沅陵县农村合作医疗管理系统";
hwnd = FindWindow(NULL,(LPCTSTR)sz_WndTxt);
}
TRACE("找到窗口了");
hwnd->SetForegroundWindow();
SendKeys("Text...."); //文字或者按键
SendKeys("\t\t\t"); //文字或者按键
SendKeys("Text...."); //文字或者按键
SendKeys("\n\n"); //文字或者按键
}
}
void CXXXDlg::SendKeys(CString msg)
{
short vk;
BOOL shift;
USES_CONVERSION;
wchar_t* data = T2W(msg.GetBuffer(0));
int len = wcslen(data);
for(int i=0;i<len;i++)
{
if (data[i]>=0 && data[i]<256) //ascii字符
{
vk = VkKeyScanW(data[i]);
if (vk == -1)
SendUnicode(data[i]);
else
{
if (vk < 0)
vk = ~vk + 0x1;
shift = vk >> 8 & 0x1;
if (GetKeyState(VK_CAPITAL) & 0x1)
{
if (data[i]>='a' && data[i]<='z' || data[i]>='A' && data[i]<='Z')
shift = !shift;
}
SendAscii(vk & 0xFF, shift);
}
}
else //unicode字符
{
SendUnicode(data[i]);
}
}
}
void CXXXDlg::SendUnicode(wchar_t data)
{
INPUT input[2];
memset(input, 0, 2 * sizeof(INPUT));
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = 0;
input[0].ki.wScan = data;
input[0].ki.dwFlags = 0x4;//KEYEVENTF_UNICODE;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = 0;
input[1].ki.wScan = data;
input[1].ki.dwFlags = KEYEVENTF_KEYUP | 0x4;//KEYEVENTF_UNICODE;
SendInput(2, input, sizeof(INPUT));
}
void CXXXDlg::SendAscii(wchar_t data, BOOL shift)
{
INPUT input[2];
memset(input, 0, 2 * sizeof(INPUT));
if (shift)
{
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_SHIFT;
SendInput(1, input, sizeof(INPUT));
}
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = data;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = data;
input[1].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(2, input, sizeof(INPUT));
if (shift)
{
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_SHIFT;
input[0].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, input, sizeof(INPUT));
}
}
VC2008验证通过!!
Когда обычный человек сталкивается с тем что потерял ключи или замок был случайно или умышленно выведен из строя мы готовы прийти на помощь и вскрыть ваш замок. Вскрытие замков может происходить как с помощью слесарного инструмента, так и профессиональных отмычек - это зависит от типа замка, его модели и каждый наш мастер знает как работать с тем или иным видом замка. Все что вам нужно сделать - это оформить вызов и подождать некоторое время прибытия мастера по замкам. Мастер поедет к вам обязательно, в каждом районе Москвы работает по несколько мастеров по вскрытию замков от нашей компании. После вскрытия замка мы поможем вам в закупке комплектующих и установке нового более надежного замка для вашей двери.
[url=https://po-zamkam.ru/]вскрытие электромагнитного замка[/url]
софосбувир +и даклатасвир отзывы цена