用API.SetWindowPos方法设置固定位置后,将第三方的应用程序嵌入到Panel控件中。

在C# Winfrom项目中,有一个form窗体,一个panel控件.
通过Process.start方法打开第三方的应用程序,将第三方程序嵌入Panel控件中。
用API.SetWindowPos方法改变第三方的应用程序位置以及大小。

目前发现一个问题,
打开第三方的应用程序设置大小及位置,通过获取panel控件的位置可以显示嵌入到Panel控件中,代码如下:
API.SetWindowPos(ptravayaWnd, IntPtr.Zero, this.panel1.Location.X, this.panel1.Location.Y, 956, 536, 0);
API.SetParent(ptravayaWnd, this.panel1.Handle);

打开第三方的应用程序设置大小及位置,通过获设置固定的位置无法显示嵌入到Panel控件中,代码如下:
API.SetWindowPos(ptravayaWnd, IntPtr.Zero,650,0, 956, 536, 0);//设置位置为:650,0 无法显示打开第三方的应用程序嵌入到Panel控件中
API.SetParent(ptravayaWnd, this.panel1.Handle);

请问如何实现用API.SetWindowPos方法设置固定位置后,能够正常的将打开的第三方的应用程序嵌入到Panel控件中。

4个回答

改变大小不要用SetWindowPos
应该用MoveWindow

SetWindowPos主要是设置Z-Order的。

sxl_88
sxl_88 因为我查了下资料,movewindow和SetWindowPos功能相近,都是可以改变大小和位置的,所以暂时选择SetWindowPos
接近 5 年之前 回复
sxl_88
sxl_88 就是将打开的第三方的应用程序设置在屏幕的坐标为650,0的位置显示
接近 5 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复sxl_88: movewindow可以同时改变大小和位置,不知道你说的固定是什么意思?
接近 5 年之前 回复
sxl_88
sxl_88 那如果窗口是受到Z-order影响的,那下面设置固定位置的代码应该怎么修改。谢谢! API.SetWindowPos(ptravayaWnd, IntPtr.Zero,650,0, 956, 536, 0);//设置位置为:650,0
接近 5 年之前 回复
sxl_88
sxl_88 API.SetWindowPos(ptravayaWnd, IntPtr.Zero,650,0, 956, 536, 0);//设置位置为:650,0
接近 5 年之前 回复
sxl_88
sxl_88 那如果窗口是受到Z-order影响的,那下面设置固定位置的代码应该怎么修改。谢谢!
接近 5 年之前 回复
sxl_88
sxl_88 那如果窗口是受到Z-order影响的,那下面设置固定位置的代码应该怎么修改。谢谢!
接近 5 年之前 回复

SetWindowPos 也可以改变大小及位置的,就是不清楚为什么改成固定位置就无法嵌入到Panel控件中.
有没有这方面的解决办法。

是不是要设置下层级,设置固定位置会不会被panel控件遮挡住,导致无法显示? 请各位帮忙看看,谢谢

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# Winform项目,关于API.SetParent问题,请各位帮忙看看。
在C# Winform项目中,有一个form窗体和一个panel控件,panel控件的大小为:956*536。 如果panel控件的位置为0,0,通过以下代码可以将SKYPE视频通话客户端嵌入到panel控件中显示(SKYPE视频通话客户端充满整个panel控件)。 IntPtr ptrSkypeWnd = API.FindWindow("SKYPE", null); \\获取Skype句柄 API.SetWindowPos(ptrSkypeWnd, IntPtr.Zero, this.panel1.Location.X, this.panel1.Location.Y, 956, 536, 0);\\设置Skype位置以及Skype大小(956*536,与panel控件大小一样) API.SetParent(ptrSkypeWnd, this.panel1.Handle);\\将Skype嵌入到panel控件中显示,且充满整个panel控件显示 如果panel控件的位置为改为650,0,则通过上面的代码无法将SKYPE视频通话客户端嵌入到panel控件中显示。 请问,各位帮忙看看这么修改下上面的代码,无法panel控件在什么位置,都可以将SKYPE视频通话客户端嵌入到panel控件中显示(且充满整个panel控件显示)
c# winform项目中,如何将word应用程序嵌入到panel控件中
在c# winform项目中,有一个form窗体和两个Panel控件(panel1和panel2), panel1的size大小为300*200,location位置为0,0 panel2的size大小为300*200,location位置为320,0 用下面的代码,无法将word句柄嵌入到pane2控件并充满整个panel2控件中显示,设置大小与panel2一样。 请问如何修改下面的代码,谢谢。 IntPtr wordWnd = API.FindWindow("word", null); \\获取word句柄 API.SetWindowPos(wordWnd, IntPtr.Zero, this.panel2.Location.X, this.panel2.Location.Y, 300, 200, 0); API.SetParent(wordWnd, this.panel2.Handle);
C# winfrom项目,怎么样实现通过WINAPI 关闭对象的句柄窗口后,还能再次获取该句柄窗口
在C# Winfrom项目中,from窗体中,有一个Panel控件。 目前已经实现将对象的窗口通过winAPI获取到句柄窗口放到了Panel控件中。 请问怎么样实现关闭from窗体后,下次再进入from窗体后,还通过winAPI获取到句柄窗口放到了Panel控件中。 关闭from窗体的事情需要怎么样写,才能实现通过winAPI获取到句柄窗口放到了Panel控件中。 附上代码(通过winAPI获取到句柄窗口放到了Panel控件中): private void Form2_Load(object sender, EventArgs e) { ptrskypeWnd = API.FindWindow("CBoxMainFrame", null); API.SetWindowPos(ptrskypeWnd, new IntPtr(-2), 0, 0, Global.Globals.Object_WIDTH, Global.Globals.Object_HEIGHT, 0x0002); System.Threading.Thread.Sleep(500); MyInvoke mi = new MyInvoke(SetPanel); BeginInvoke(mi, new object[] { ptrskypeWnd }); } /// <summary> /// 将嵌入Panel控件 /// </summary> public void SetPanel(IntPtr ptrskypeWnd) { //label1.Text += str + System.Environment.NewLine; API.SetParent(ptrskypeWnd, this.panel1.Handle); API.ShowWindow(ptrskypeWnd, WindowsApi.API.SW_MAXIMIZE); }
VS2010 MFC tab control控件
我将标签设置在bottom时,可以显示标签并可以点击,但是对话框没有内容显示 更没有切换效果,请问这是何故?但是我设置在顶部时,一切正常! 附上简短的代码: 在OnInitDialog中如下: SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 CRect tabRect; // 标签控件客户区的位置和大小 m_tab.InsertItem(0, _T("JAVA开发网")); // 插入第一个标签“鸡啄米” m_tab.InsertItem(1, _T("Android开发网"));// 插入第二个标签“Android开发网” m_tab.InsertItem(2, _T("MFC开发网")); m_dialog1.Create(IDD_DIALOG1,&m_tab); // 创建第一个标签页 m_dialog2.Create(IDD_DIALOG2,&m_tab); // 创建第二个标签页 m_dialog3.Create(IDD_DIALOG3,&m_tab); m_tab.GetClientRect(&tabRect); // 获取标签控件客户区Rect // 调整tabRect,使其覆盖范围适合放置标签页 tabRect.left += 1; tabRect.right -= 1; tabRect.top -= 1; tabRect.bottom +=20; // 根据调整好的tabRect放置m_jzmDlg子对话框,并设置为显示 m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); // 根据调整好的tabRect放置m_androidDlg子对话框,并设置为隐藏 m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE 响应函数如下: void Ctest26Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 *pResult = 0; CRect tabRect; // 标签控件客户区的Rect // 获取标签控件客户区Rect,并对其调整,以适合放置标签页 m_tab.GetClientRect(&tabRect); tabRect.left += 1; tabRect.right -= 1; tabRect.top -= 1; tabRect.bottom += 20; switch (m_tab.GetCurSel()) { // 如果标签控件当前选择标签为“鸡啄米”,则显示m_jzmDlg对话框,隐藏m_androidDlg对话框 case 0: m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); break; // 如果标签控件当前选择标签为“Android开发网”,则隐藏m_jzmDlg对话框,显示m_androidDlg对话框 case 1: m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); break; case 2: m_dialog1.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_dialog2.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_dialog3.SetWindowPos(NULL, tabRect.left, tabRect.bottom, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); break; default: break; } }
MFC中的SetWindowPOS函数不会用了,求教
我是想实现在对话框中标签式浏览子对话框的功能的,但是执行到这个SetWindowPOS函数的时候总是出错,我是设断点查看的。 这是部分代码: BOOL ShowDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 CRect tabRect; m_tab.InsertItem(0,_T("Printer")); m_printer.Create(IDD_PRINTER,&m_printer); m_tab.GetClientRect(&tabRect); m_printer.SetWindowPos(NULL,tabRect.left,tabRect.top,tabRect.Width(),tabRect.Height(),SWP_SHOWWINDOW); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } 主对话框中的Tab Control控件已定义变量m_tab, 子对话框已定义变量m_printer。 工程文件是单文档类型而不是对话框类型,我已经试过这段代码放在对话框类型的工程中是没问题的,唯独在单文档类型程序中出问题。 我参考的是这里的代码: http://www.jizhuomi.com/software/207.html
在MFC中使用标签页切换CDC* pDC=pWnd->GetDC();出错
在写MFC的标签页时我需要实现的是该界面的功能![图片说明](https://img-ask.csdn.net/upload/201707/19/1500453864_301813.png) 在该界面中点击打开图片便能够将选中的图片显示到图片控件中去。![图片说明](https://img-ask.csdn.net/upload/201707/19/1500453954_592262.png) 而我的要求就是在切换到别的标签页时再切换回来该显示图片还在,所以我就做了相关的处理,但是报错了。![图片说明](https://img-ask.csdn.net/upload/201707/19/1500454095_577628.png)以下是我写的两部分和显示有关的代码: ```cpp //这是为“打开图片”按钮写的点击函数,点击选择图片后便做相应的操作 void CIMGDlg::OnBnClickedOpenButton() { // TODO: 在此添加控件通知处理程序代码 // 设置过滤器 TCHAR szFilter[] = _T("图像文件(*.jpg)|*.jpg|所有文件(*.*)|*.*||"); // 构造打开文件对话框 CFileDialog fileDlg(TRUE, _T("jpg"), NULL, 0, szFilter, this); CString strFilePath; CString strFilePathSave; // 显示打开文件对话框 if (IDOK == fileDlg.DoModal()) { // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里 strFilePath = fileDlg.GetPathName(); SetDlgItemText(IDC_OPEN_EDIT, strFilePath); //获得图片的保存路径 strFilePathSave = fileDlg.GetFileTitle(); //---------------------CString的连接操作中=号有点特殊,所以要注意这种连接操作-------------------------------------// CString strTmp(_T("temp\\")); strFilePathSave = strTmp + strFilePathSave ; strFilePathSave+=".bmp"; //_______________________________________________________________________________________________________________// } //-----------------------------------这段代码将CString转换为String类型可以重复使用-----------------------------------// //将CString类型的文件地址转换成String类型 String strFilePath_cv,strFilePathSave_cv; strFilePath_cv = CT2CA(strFilePath.GetBuffer(0)); strFilePathSave_cv = CT2CA(strFilePathSave.GetBuffer(0)); //-------------------------------------------------------------------------------------------------------------------// //------------------------------------这段代码用来显示自己所需要的信息可以重复使用-----------------------------------// //CString msg(strFilePath_cv.c_str()); //MessageBox(msg, _T("Debug"), MB_OKCANCEL | MB_ICONQUESTION); //-------------------------------------------------------------------------------------------------------------------// Mat pic_Input = imread(strFilePath_cv);//通过路径读取图片 imwrite(strFilePathSave_cv,pic_Input);//将读取的路径转换格式并且保存到项目中去 //String转为LPCTSTR CImage img; CString cstr(strFilePathSave_cv.c_str()); extern LPCTSTR m_faceImg; m_faceImg = cstr; img.Load(cstr); //---------------------------------在指定的图像控件中画出图像---------------------------------------------------------// CWnd* pWnd; pWnd=GetDlgItem(IDC_Face_DRAW); CDC* pDC=pWnd->GetDC(); HDC hDC = pDC->m_hDC; CRect rect_frame; //CImage image; pWnd->GetClientRect(&rect_frame); ::SetStretchBltMode(hDC,HALFTONE); ::SetBrushOrgEx(hDC,0,0,NULL); img.Draw(hDC,rect_frame); ReleaseDC(pDC);//释放picture控件的DC //-------------------------------------------------------------------------------------------------------------------// } ``` ```cpp //这是选择相应标签页后做的操作 switch (m_tab.GetCurSel()) { //当标签被选中时则显示对应的对话框 case 0: { m_imgDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); m_landmarkDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_faceDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_modelDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); /*extern LPCTSTR m_faceImg; MessageBox(m_faceImg, _T("Debug"), MB_OKCANCEL | MB_ICONQUESTION);*/ //if(m_imgDlg.m_faceImg!=_T("temp\\1.bmp")) CImage img; //MessageBox(_T("temp\\1.bmp"), _T("Debug"), MB_OKCANCEL | MB_ICONQUESTION); //初始加载一张产品图片 img.Load(_T("temp\\2.bmp")); CWnd* pWnd; pWnd=GetDlgItem(IDC_Face_DRAW); CDC* pDC=pWnd->GetDC(); HDC hDC = pDC->m_hDC; CRect rect_frame; CImage image; pWnd->GetClientRect(&rect_frame); ::SetStretchBltMode(hDC,HALFTONE); ::SetBrushOrgEx(hDC,0,0,NULL); img.Draw(hDC,rect_frame); ReleaseDC(pDC);//释放picture控件的DC break; } case 1: m_imgDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_landmarkDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); m_faceDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_modelDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); break; case 2: m_imgDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_landmarkDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_faceDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); m_modelDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); break; case 3: m_imgDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_landmarkDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_faceDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_HIDEWINDOW); m_modelDlg.SetWindowPos(NULL, tabRect.left, tabRect.top, tabRect.Width(), tabRect.Height(), SWP_SHOWWINDOW); break; default: break; } ```
python调用一个函数里返回的变量不成功
我要写一个监控LOL击杀记录的功能,但是代码有问题,虽然可以监控到击杀记录,但是不能将监控的结果输出出来。 ``` import win32gui import win32api import win32con from win32gui import * import time from PIL import Image from PIL import ImageGrab import imagehash import pymouse,pykeyboard,os,sys from pymouse import * from pykeyboard import PyKeyboard import schedule import cv2 import numpy as np import matplotlib.pyplot as plt from threading import Thread,Lock m = PyMouse() k = PyKeyboard() titles = set() lock=Lock() i=0 reward = 0 #获取电脑上的窗口句柄 def foo(hwnd,mouse): if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd): titles.add(GetWindowText(hwnd)) def playGame(): """Click the game icon in the simulator to enter and displays to the specified location""" EnumWindows(foo, 0) list = [] for title in titles: if title: list.append(title) for title in list: a = 'League of Legends (TM) Client' if title.find(a) != -1: hwnd = win32gui.FindWindow(0,a) win32gui.SetWindowPos(hwnd, win32con.HWND_TOP,0,0,1282,790,win32con.SWP_SHOWWINDOW) hwnd = win32gui.FindWindow(0,a) size = win32gui.GetWindowRect(hwnd) #print(size) # 在模拟器点击游戏图标进入游戏 #win32api.SetCursorPos([size[0] + 410, size[1] + 186]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) #time.sleep(10) return size def jianc(): """Click to implement in the game""" # 点击我知道 reward = 0 size = playGame() #time.sleep(15) #print(size) topx, topy = size[0], size[1] #print(topx) #print(topy) ImageGrab.grab((topx + 496, topy + 125, topx + 787, topy + 155)).save(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg','JPEG') pic = np.array(Image.open(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg')) N = 125 for a in range(pic.shape[0]): for j in range(pic.shape[1]): if (pic[a][j][0] > N)&(pic[a][j][1] > N)&(pic[a][j][2] > N): pic.itemset((a,j,0),255) pic.itemset((a,j,1),255) pic.itemset((a,j,2),255) else: pic.itemset((a,j,0),0) pic.itemset((a,j,1),0) pic.itemset((a,j,2),0) #plt.imshow(pic) plt.axis('off') cv2.imencode('.jpg', pic)[1].tofile(r'C:\Users\Administrator\Desktop\game\model\检测/cheshi'+str(i)+'.jpg') #cv2.imwrite(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg',pic) #plt.savefig("result.jpg") #plt.show() #im.save(r'C:\Users\Administrator\Desktop\123/'+str(c)+'.jpg','JPEG') #设置保存路径和图片格式 hash_size = 6 hash1 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg'), hash_size=hash_size) hash2 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\击杀了一名.png'), hash_size=hash_size) hash3 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\你已经被击杀.png'), hash_size=hash_size) hash4 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\摧毁防御塔.png'), hash_size=hash_size) hash5 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\双杀.png'), hash_size=hash_size) hash6 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\三杀.png'), hash_size=hash_size) a = (1 - (hash1 - hash2) / len(hash1.hash) ** 2) a1 = (1 - (hash1 - hash3) / len(hash1.hash) ** 2) a2 = (1 - (hash1 - hash4) / len(hash1.hash) ** 2) a3 = (1 - (hash1 - hash5) / len(hash1.hash) ** 2) a4 = (1 - (hash1 - hash6) / len(hash1.hash) ** 2) #print("你被击杀了",a1) if a > 0.76 and a<0.83: reward=1 print("你击杀了",reward,"人!!!") #win32api.SetCursorPos([topx + 290, topy + 310]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) elif a1>0.84: reward=-1 print("你被击杀了",reward,"人!!!") return reward elif a2>0.9: reward=1 print("你摧毁了防御塔",reward,"人!!!") elif a3>1: reward=2 print("你双杀了","人!!!") elif a4>1: reward=3 print("你三杀了","人!!!") return reward # # def main(reward): n=0 print(reward) schedule.every(4).seconds.do(jianc)#执行定时截屏 while True: #循环 schedule.run_pending() n = n+1 time.sleep(4) reward=jianc() return reward if __name__ == '__main__': #print(reward) lock.acquire() l=0 while True: #循环 l = l+1 time.sleep(4) main(reward) print('得分',reward) lock.release() ``` 这就是代码,识别准确率比较低,但是最重要的是最后得到的结果不能输出, 我想要的是,识别一张图片输出一个reward,然后在识别下一个图片。 应该怎么改呀,大佬们。 if a > 0.76 and a<0.83: reward=1 print("你击杀了",reward,"人!!!") #win32api.SetCursorPos([topx + 290, topy + 310]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) elif a1>0.84: reward=-1 print("你被击杀了",reward,"人!!!") return reward elif a2>0.9: reward=1 print("你摧毁了防御塔",reward,"人!!!") elif a3>1: reward=2 print("你双杀了","人!!!") elif a4>1: reward=3 print("你三杀了","人!!!") return reward 这一段代码怎么改才能把reward返回出来,求大佬出来指点一下 把循环拿到外面就好了 ``` import win32gui import win32api import win32con from win32gui import * import time from PIL import Image from PIL import ImageGrab import imagehash import pymouse,pykeyboard,os,sys from pymouse import * from pykeyboard import PyKeyboard import schedule import cv2 import numpy as np import matplotlib.pyplot as plt from threading import Thread,Lock m = PyMouse() k = PyKeyboard() titles = set() lock=Lock() i=0 #reward = 0 #获取电脑上的窗口句柄 def foo(hwnd,mouse): if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd): titles.add(GetWindowText(hwnd)) def playGame(): """Click the game icon in the simulator to enter and displays to the specified location""" EnumWindows(foo, 0) list = [] for title in titles: if title: list.append(title) for title in list: a = 'League of Legends (TM) Client' if title.find(a) != -1: hwnd = win32gui.FindWindow(0,a) win32gui.SetWindowPos(hwnd, win32con.HWND_TOP,0,0,1282,790,win32con.SWP_SHOWWINDOW) hwnd = win32gui.FindWindow(0,a) size = win32gui.GetWindowRect(hwnd) #print(size) # 在模拟器点击游戏图标进入游戏 #win32api.SetCursorPos([size[0] + 410, size[1] + 186]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) #time.sleep(10) return size def jianc(): """Click to implement in the game""" # 点击我知道 #reward = 0 size = playGame() #time.sleep(15) #print(size) topx, topy = size[0], size[1] #print(topx) #print(topy) ImageGrab.grab((topx + 496, topy + 125, topx + 787, topy + 155)).save(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg','JPEG') pic = np.array(Image.open(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg')) N = 125 for a in range(pic.shape[0]): for j in range(pic.shape[1]): if (pic[a][j][0] > N)&(pic[a][j][1] > N)&(pic[a][j][2] > N): pic.itemset((a,j,0),255) pic.itemset((a,j,1),255) pic.itemset((a,j,2),255) else: pic.itemset((a,j,0),0) pic.itemset((a,j,1),0) pic.itemset((a,j,2),0) #plt.imshow(pic) plt.axis('off') cv2.imencode('.jpg', pic)[1].tofile(r'C:\Users\Administrator\Desktop\game\model\检测/cheshi'+str(i)+'.jpg') #cv2.imwrite(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg',pic) #plt.savefig("result.jpg") #plt.show() #im.save(r'C:\Users\Administrator\Desktop\123/'+str(c)+'.jpg','JPEG') #设置保存路径和图片格式 hash_size = 6 hash1 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg'), hash_size=hash_size) hash2 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\击杀了一名.png'), hash_size=hash_size) hash3 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\你已经被击杀.png'), hash_size=hash_size) hash4 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\摧毁防御塔.png'), hash_size=hash_size) hash5 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\双杀.png'), hash_size=hash_size) hash6 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\三杀.png'), hash_size=hash_size) return hash1,hash2,hash3,hash4,hash5,hash6 # # def main(hash1,hash2,hash3,hash4,hash5,hash6): a = (1 - (hash1 - hash2) / len(hash1.hash) ** 2) a1 = (1 - (hash1 - hash3) / len(hash1.hash) ** 2) a2 = (1 - (hash1 - hash4) / len(hash1.hash) ** 2) a3 = (1 - (hash1 - hash5) / len(hash1.hash) ** 2) a4 = (1 - (hash1 - hash6) / len(hash1.hash) ** 2) #print("你被击杀了",a1) return a,a1,a2,a3,a4 def defen(): #print(reward) schedule.every(4).seconds.do(jianc)#执行定时截屏 #lock.acquire() reward=0 hash1,hash2,hash3,hash4,hash5,hash6=jianc() a,a1,a2,a3,a4=main(hash1,hash2,hash3,hash4,hash5,hash6) #time.sleep(4) #reward=jianc() #循环 if a > 0.76 and a<0.83: reward=1 #print("你击杀了",reward,"人!!!") #win32api.SetCursorPos([topx + 290, topy + 310]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) elif a1>0.84: reward=-1 #print("你被击杀了",reward,"人!!!") #return reward elif a2>0.9: reward=1 #print("你摧毁了防御塔",reward,"人!!!") elif a3>1: reward=2 #print("你双杀了","人!!!") elif a4>1: reward=3 #print("你三杀了","人!!!") else : #print(reward) reward=0 #print('得分',a,a1,a2,a3,a4,reward) #time.sleep(4) #lock.release() return reward if __name__ == '__main__': l=0 while True: #循环 schedule.run_pending() l = l+1 #defen() reward=defen() #print(reward) time.sleep(4) ```
C++子窗口的层次相关,急急急急急急急
窗口A有2个对象B和C,怎么让B始终显示在该程序的最上面 就是在点击C的时候B不被C覆盖. //设置对话框始终为系统顶端 B.SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); **让B始终显示在该程序的最上面,而不是系统的最上面**
mfc tab空间上添加属性页,页面总是显示不到Tab控件上,坐标转换怎么弄来着啊
m_tab.InsertItem(0,_T("播放列表")); m_tab.InsertItem(1,_T("搜索歌曲")); m_musiclist.Create(IDD_DIALOG_LIST,&m_tab); //m_musiclist.ShowWindow(SW_SHOW); m_musicsearch.Create(IDD_DIALOG_SEARCH,&m_tab); //m_musicsearch.ShowWindow(SW_HIDE); CRect rect; m_tab.GetClientRect(&rect); m_tab.ClientToScreen(&rect); //m_tab.ScreenToClient(&rect); //m_musiclist.MoveWindow(&rect); //m_musicsearch.MoveWindow(&rect); m_musiclist.SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_SHOWWINDOW); m_musicsearch.SetWindowPos(NULL,rect.left,rect.top,rect.Width(),rect.Height(),SWP_HIDEWINDOW); return TRUE;
急!MFC如何只显示子窗口的一部分
问题描述: 小弟最近在使用MFC做界面,遇上一个窗口嵌入显示的问题。 我有一个子窗口要嵌入父窗口的控件中。而且嵌入显示的时候只能显示窗口的指定区域。尝试了使用SetWindowPos()和SetWindowRgn()l两种方法。代码如下: 方法一: ``` void Show(CRect _rect, bool Mode) { MoveWindow(_rect, 1); if(!Mode) { CRect tmp; GetDlgItem(IDC_XXX)->GetClientRect(&_rect); SetWindowPos(NULL, _rect.left, _rect.top, _rect.Width(), _rect.Height(),SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER); } } ``` 方法一没有效果,窗口确实移动到了指定位置,然后我希望只显示控件部分大小,但是多余的部分不会隐藏起来,没有任何效果。 方法二: ``` void Show(CRect _rect, bool Mode) { MoveWindow(_rect, 1); if(!Mode) { CRect tmp; GetDlgItem(IDC_XXX)->GetClientRect(&tmp); CRgn _rgn; _rgn.CreateRectRgn(&_rect); this->SetWindow(_rgn); } } ``` 方法二可以实现想要的效果,但是反复创建CRgn对象会占用内存,而局部变量有无法删除,在类中定义一个变量的话,使用SetWindowRgn()设置一次后再设置第二次就会出错。求各位大佬给小弟帮帮忙!
mfc 如何使弹出菜单在顶层窗口之上?
程序主窗口需要一直置顶: ``` SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); ``` 窗口还需要能够弹出右键菜单,在 OnContextMenu函数中的语句: ``` theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_RUN, point.x, point.y, pWnd, TRUE); ``` 运行发现弹出菜单被窗口遮挡了,如何使菜单显示在窗口之上?谢谢!
mfc中shellexecute调用后改变窗口位置
在使用shellexecute调用exe程序后 如何改变这个exe窗口的位置和大小。 如何使用findwindow和setwindowpos来改变啊,setwindowpos里面参数没有窗口句柄?
我想用Python写一个游戏脚本,自动点击排队!
我刚学Python,用已掌握的知识已经用"autopy"的功能写了一个鼠标自动点击排队的脚本,但是我想让这个脚本不用在窗口最前端显示也能运行,就是最小化了也能继续在后台继续工作,可是不了解Python的强大功能,下面是代码,有些是在网上找的方法,大部分是我自己瞎琢磨的,求大神指点! import win32gui import win32con import time import math import autopy Left_btn=autopy.mouse.Button.LEFT #声明鼠标左键 colour_1 = (228,225,223) #RGB主界面 colour_2 = (229,197,141) #RGB准备 colour_3 = (44,24,19) #RGB战斗结束 colour_4 = (115,75,40) def Ready(X_axis,Y_axis): ###取得所需要像素的R,G,B### R = autopy.screen.get_color(X_axis,Y_axis)[0] G = autopy.screen.get_color(X_axis,Y_axis)[1] B = autopy.screen.get_color(X_axis,Y_axis)[2] return R,G,B class GameAssist: def __init__(self,wdname): """初始化""" #取得游戏窗口句柄 self.hwnd = win32gui.FindWindow(0,wdname) if not self.hwnd: print("未找到游戏窗口,请确认窗口句柄名称:【%s】"% wdname) exit() #窗口显示在最前面 win32gui.SetForegroundWindow(self.hwnd) newx = 0 newy = 1 win32gui.SetWindowPos(self.hwnd, win32con.HWND_TOPMOST, newx, newy, 300, 300, win32con.SWP_SHOWWINDOW) def Line_Up(): #日和坊自动排队 time.sleep(1) autopy.mouse.move(102,262) time.sleep(0.5) autopy.mouse.click() time.sleep(1) autopy.mouse.move(102,262) time.sleep(0.5) autopy.mouse.click() time.sleep(0.5) autopy.mouse.move(183,240) time.sleep(0.5) autopy.mouse.toggle(Left_btn,True) time.sleep(0.5) autopy.mouse.smooth_move(183,155) time.sleep(0.5) autopy.mouse.toggle(Left_btn,False) time.sleep(0.5) autopy.mouse.move(183,256) time.sleep(0.5) autopy.mouse.click() time.sleep(0.5) autopy.mouse.move(288,280) time.sleep(0.5) autopy.mouse.click() def Tricks(): ####鼠标模拟点击#### while True: if Ready(100,258) == colour_1: #对比主界面RGB是否为真 Line_Up() #日和坊自动排队 time.sleep(4) while Ready(130,248) != colour_4: Line_Up()
setparent 导致子窗体本身的模态化对话框失去模态化特性
两个进程,用setParent API将两个进程的窗体设为父子窗口,然后用setwindowpos将子窗体定位, 但是测试发现子窗体本身的模态化对话框会失去模态化特性 SetParent(_externalAppWindowHandle, this.ConsoleWindowHandle); SetWindowPos(_externalAppWindowHandle,0,0,0,0,0,0x0040); 两个进程都是wpf程序 还有没有其它方式能设置两个进程窗口句柄为父子窗体关系
急急急!MFC自绘ListCtrl控件后不能insertitem,只要插入行执行就报错
下面是我参考的博客上自绘的控件http://blog.csdn.net/candcplusplus/article/details/9005697 然后下面是我在我的OnInitDialog()函数中添加的代码 m_List.ModifyStyle( 0, LVS_REPORT ); // 报表模式 m_List.SetExtendedStyle(m_List.GetExtendedStyle() | LVS_EX_GRIDLINES ); CRect rect; m_List.GetClientRect(rect); //获得当前客户区信息 m_List.InsertColumn(0,"端口号"); //插入列 m_List.InsertColumn(1,"IP"); m_List.InsertColumn(2,"choose"); m_List.SetColumnWidth(0, rect.Width() / 3); //设置列的宽度。 m_List.SetColumnWidth(1, rect.Width() / 3); m_List.SetColumnWidth(2, rect.Width() / 3); int row=14; m_List.SetRowHeight(rect.Height()/row); m_List.InsertItem(0,"11");//插入行 m_List.SetItemText(0,1,"好棒哦"); m_List.SetWindowPos(&wndBottom ,0,0,rect.Width(),rect.Height(),SWP_NOSIZE); 执行之后出来这个 ![图片说明](https://img-ask.csdn.net/upload/201801/18/1516275163_672856.png) 本人编程小白,捣鼓了很久还没捣鼓出来,求csdn大神们相助!
如何修改VS大小和位置
在控制台启动进程,修改VS2008的大小和位置。因为VS有限制, SetWindowPos这样的函数都不成功,怎么办
对话框的收缩与扩展问题
我用VC6的基于对话框的.exe来来实现对话框的收缩和扩展(其实就是改变一下对话框的大小)。在CMyDlg类中增加两个CRect类的成员变量rectlarge和rectsmall,分别保存收缩后河扩展后的窗口的大小,在BOOL CMyDlg::OnInitDialog()中对rectlarge进行初始化。现在存在的问题是:在CMyDlg类中调用GetWindowRect(&rectlarge)函数后,rectlarge.top和rectlarge.left都为0,这样虽然最后也能实现对话框的收缩和扩展,但对话框一下子就跑到屏幕左上角了,后面的 if(m_sta==FALSE) { SetWindowPos(NULL,rectsmall.left,rectsmall.top ,rectsmall.Width(),rectsmall.Height(),SWP_NOZORDER|SWP_NOMOVE); m_sta=TRUE; } else { SetWindowPos(NULL,rectlarge.left,rectlarge.top ,rectlarge.Width(),rectlarge.Height(),SWP_NOZORDER|SWP_NOMOVE); m_sta=FALSE; } } 这是什么原因呢?
请教一个Unity PC端多显示器分辨率适配的问题
建立一个场景,两个相机分别绑定到display1,display2,其中1是1920-1080显示器, 2是3840-2160显示器。并按照U3D 官方manual的说明,对多显示器进行了初始化。 public class multidisplay : MonoBehaviour { [DllImport("user32.dll")] static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); [DllImport("user32.dll")] static extern IntPtr GetActiveWindow(); // Use this for initialization void Start () { Debug.Log("displays connected: " + Display.displays.Length); // Display.displays[0] is the primary, default display and is always ON. // Check if additional displays are available and activate each. if (Display.displays.Length > 1) //Display.displays[1].Activate(); Display.displays[1].Activate(3840, 2160,60); //SetWindowPos(GetActiveWindow(), -1, -1920, 0, 3840, 2160, 0x0040); } 结果运行后不管怎么样调(选择不同显示器,不同分辨率,以及用SetWindowsPos),要么是1080p的那边正常全屏,4K的只铺满显示器上面一半,要么4K的正常全屏,1080p的只显示出一部分(伸出屏幕外的感觉)。 请问如何能做到两台不同分辨率的显示器均能全屏显示?我用的是扩展桌面方式,因两个相机要显示同一场景的不同内容。 折磨了一个月的,盼大拿协助
数据库表中有用户信息,但什么Adodc1.Recordset.RecordCount=0 ?
请教各位大神!数据库有数据,代码没写错,为什么会Adodc1.Recordset.RecordCount=0 ? # 问题描述 用vb6.0写用户管理窗体, “注册用户”运行正常,注册了一个名叫"lucy "的用户,然后点击“删除现有用户”进行测试“删除”的运行情况。 ![图片说明](https://img-ask.csdn.net/upload/201904/13/1555151886_833238.jpg) 可为什么Adodc1.Recordset.RecordCount=0呢? ![图片说明](https://img-ask.csdn.net/upload/201904/13/1555151957_967103.jpg) 提示"当前数据库没有可删除的用户信息"。 ![图片说明](https://img-ask.csdn.net/upload/201904/13/1555151981_944351.jpg) 查看SQL的数据表却可以看到lucy的数据,为什么无法删除lucy用户呢? ![图片说明](https://img-ask.csdn.net/upload/201904/13/1555151996_949283.jpg) # 详细代码如下: ``` '删除现有用户的确定事件 Private Sub CmdSure2_Click() rtn = SetWindowPos(Me.hwnd, -2, 0, 0, 0, 0, 3) '取消置前 '禁止删除当前用户 If Combo1.Text = Name1 Then MsgBox "不能删除当前用户", vbInformation, "系统提示" Else a = MsgBox("您确定要删除该用户吗?", vbCritical + vbOKCancel, "系统提示") If a = vbOK Then '查询数据库,并将结果放进Adodc1.RecordSource中 Adodc1.RecordSource = "select * from tb_enter where vchUserName = ' " & Combo1.Text & " ' " Adodc1.Refresh '刷新 '语法没问题,但是不会执行到这一步,无法删除用户信息 MsgBox Adodc1.Recordset.RecordCount '查看记录集的记录条数 If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.Delete '删除记录集中的数据 Adodc1.Refresh MsgBox "用户信息删除成功", vbExclamation, "系统提示" Unload Me Else MsgBox "当前数据库没有可删除的用户信息" End If End If End If End Sub ``` 还望各位大神不吝赐教呀!
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
实战:如何通过python requests库写一个抓取小网站图片的小爬虫
有点爱好的你,偶尔应该会看点图片文字,最近小网站经常崩溃消失,不如想一个办法本地化吧,把小照片珍藏起来! 首先,准备一个珍藏的小网站,然后就可以开始啦! 第一步 我们先写一个获取网站的url的链接,因为url常常是由page或者,其他元素构成,我们就把他分离出来,我找到的网站主页下有图片区 图片区内有标题页,一个标题里有10张照片大概 所以步骤是: 第一步:进入图片区的标题页 def getH...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问