C# 獲取句柄程序

這個小程序需要用到系統API,也就是需要用到user32中的三個函數。
第一個:WindowFromPoint 返回一個窗口句柄
第二個:GetWindowText??獲取窗口標題
第三個:GetClassName??獲取類名
當然,最重要的一點就是要引用命名空間:using System.Runtime.InteropServices;
先來看看做出來的效果:
C#通過鼠標獲取窗口句柄
在來看看源碼:
------------------源碼部分-------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace prjCursorHandler
{
????public partial class Form1 : Form
????{
????????//獲取窗口標題
????????[DllImport("user32", SetLastError = true)]
????????public static extern int GetWindowText(
????????IntPtr hWnd,?//窗口句柄
????????StringBuilder lpString,?//標題
????????int nMaxCount ?//最大值
????????);
????????//獲取類的名字
????????[DllImport("user32.dll")]
????????private static extern int GetClassName(
????????????IntPtr hWnd, //句柄
????????????StringBuilder lpString, //類名
????????????int nMaxCount //最大值
????????);
????????//根據坐標獲取窗口句柄
????????[DllImport("user32")]
????????private static extern IntPtr WindowFromPoint(
????????Point Point ?//坐標
????????);
????????public Form1()
????????{
????????????InitializeComponent();
????????}
????????private void button1_Click(object sender, EventArgs e)
????????{
????????????this.timer1.Enabled = !this.timer1.Enabled;
????????}

????????private void timer1_Tick(object sender, EventArgs e)
????????{
????????????int x = Cursor.Position.X;
????????????int y = Cursor.Position.Y;
????????????Point p = new Point(x, y);
????????????IntPtr formHandle = WindowFromPoint(p);//得到窗口句柄
????????????StringBuilder title = new StringBuilder(256);
????????????GetWindowText(formHandle, title, title.Capacity);//得到窗口的標題
????????????StringBuilder className = new StringBuilder(256);
????????????GetClassName(formHandle, className, className.Capacity);//得到窗口的句柄
????????????this.textBox1.Text = "窗口句柄:" + formHandle.ToString() + Environment.NewLine + "窗口標題:" + title + Environment.NewLine + "類名:" + className;
????????}

????????private void textBox1_KeyDown(object sender, KeyEventArgs e)
????????{
????????????if(e.KeyCode==Keys.Enter || e.KeyCode==Keys.Space)
????????????{
????????????????this.button1.PerformClick();
????????????}
????????}
????}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387406.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HBase安裝配置

HBase的安裝配置: 4臺主機:hdp0 hdp1 hdp2 hdp3 hdp0 hdp1 跑HMaster hdp2 hdp3 跑HRegionServer 將HBase解壓之后 1、確保安裝ZooKeeper; 2、修改hbase-env.sh export JAVA_HOME/.../jdk export HBASE_MANAGES_ZKfalse //使用外部的…

python cook讀書筆記第2章字符串和文本

使用多個界定符分割字符串 line asdf fjdk; afed, fjek,asdf, fooimport re# line re.split(r[;,\s]\s*,line)# print(line)# [asdf, fjdk, afed, fjek, asdf, foo]"""當你使用 re.split() 函數時候,需要特別注意的是正則表達式中是否包含一個括號…

centos7安裝oracle12c 一

本文 基本參考了下面這篇文章http://blog.csdn.net/gq5251/article/details/42004035 和http://www.linuxidc.com/Linux/2017-08/146528.htm 但是改正了一些錯誤操作系統:CentOS Linux release 7.2.1511 (Core) oracle: oarcle (12.1.0.2.0) - Standard Edition (SE2)幾點要注…

Bigtable的些許重點

分布式數據庫系統 針對于海量數據,可擴展,高吞吐量,低時延 不支持關系模型 通過row和column進行索引,row和column可以是任意字符串 所存儲的數據也是字符串 Bigtable是一個map,value是array of bytes,通…

阿里云天池 Python訓練營Task4: Python數據分析:從0完成一個數據分析實戰 學習筆記

本學習筆記為阿里云天池龍珠計劃Python訓練營的學習內容,學習鏈接為:https://tianchi.aliyun.com/specials/promotion/aicamppython?spm5176.22758685.J_6770933040.1.6f103da1tESyzu 一、學習知識點概要 本次主要通過阿里云天池的賽題【Python入門系…

JMETER從JSON響應中提取數據

如果你在這里,可能是因為你需要使用JMeter從Json響應中提取變量。 好消息!您正在掌握掌握JMeter Json Extractor的權威指南。作為Rest API測試指南的補充,您將學習掌握Json Path Expressions 所需的一切。 我們走吧!并且不要驚慌&…

centos7安裝oracle12c 二

環境:CentOS7VMware12,分配資源:CPU:2顆,內存:4GB,硬盤空間:30GB Oracle 12C企業版64位 下載地址:http://www.oracle.com/technetwork/database/enterprise-edition/down…

阿里云天池 Python訓練營Task5:Python訓練營測試 學習筆記

一、學習知識點概要 本次是Python訓練營的測試,在45分鐘內完成25題,滿分100分及格80分。題目主要考察Task1到Task3里面的Python基礎知識。在我隨到的25道題里,知識點有: 變量(包括數據類型和容器類型)運算…

centos7安裝oracle12c 三

場景描述:我在自己電腦的虛擬機上linux環境下安裝oracle11g數據庫。 Linux版本為:CentOS release 6.8 (Final),Oracle版本為:linux.x64_11gR2 問題描述:在oracle安裝到Prerequisite Checks這一步的時候,出現…

mysql刪除一條記錄

mysql如何刪除一條記錄delete from 表名 where 條件實例:use db1delete from tb1 where id 1; 轉載于:https://www.cnblogs.com/effortsing/p/10393229.html

HBase體系結構

HBase HBase是Apache Hadoop的數據庫,基于HDFS文件系統 random,realtime read/write access to Big Data 開源、分布式、可擴展、面向列 larger tables--billions of rows X millions of columns 不支持表鏈接操作 不支持事務處理 HBase存儲的數據從邏輯上來…

《屬性數據分析引論》 部分課后習題R語言實踐(第三章、第四章)

目錄 前言 第三章 廣義線性模型 習題3.18 a小題 b小題 c小題 d小題 習題3.19 a小題 b小題 c小題 第四章 Logistic回歸 習題4.1 a小題 b小題 c小題 d小題 e小題 習題4.2 a小題 b小題 c小題 d小題 小結 前言 習題選自高等教育出版社譯制,Alan A…

Linux下SVN搭建

在Linux系統中搭建svn服務所需要用到的軟件叫做subversion,可以通過yum來進行安裝,如圖 安裝好軟件后第一件事就是創建一個倉庫目錄 [rootserver1 ~]# mkdir /svn 使用svn自帶命令建立倉庫 [rootserver1 ~]# svnadmin create /svn 進入該倉庫&#xff0c…

HBase模式設計

HBase的使用是為了解決或優化某一問題 恰當的設計模式可以使其具有HBase本身所不具有的功能,并且使其執行效率得到成百上千倍的提高 在進行HBase數據庫模式設計的時候,不當的設置可能對系統的性能產生不良的影響 需要注意: 1、列族的數量及…

C++STL特殊容器priority_queue

在了解priority_queue&#xff08;優先隊列&#xff09;前&#xff0c;可以先去瞅瞅queue&#xff0c;下面是傳送門啦>——< 傳送門 priority_queue的基本性能 class priority_queue<>實現出一個queue&#xff0c;只不過其中的元素依照優先級被讀取。priority_queu…

可用于多元正態的參數估計 及 均值向量和協差陣檢驗 的R語言函數總結

一、多元正態的參數估計 1.1 樣本均值 在R語言中&#xff0c;均值通常用函數mean()得到&#xff0c;但是mean()只能計算一維變量的樣本均值&#xff0c;在面對多元隨機變量的樣本時&#xff0c;假設我們以數據框的形式保存樣本&#xff0c;我們有以下方法可以得到樣本均值&…

30秒的PHP代碼片段-MATH

本文來自GitHub開源項目 點我跳轉 30秒的PHP代碼片段 精選的有用PHP片段集合&#xff0c;您可以在30秒或更短的時間內理解這些片段。數學函數 average 返回兩個或多個數字的平均值。 function average(...$items) { $count count($items); return $count 0 ? 0 : array_sum(…

Hive簡介

Hive最初是應Facebook每天產生的海量新興社會網絡數據進行管理和機器學習的需求而產生和發展的 是建立在Hadoop上的數據倉庫基礎架構 作為Hadoop的一個數據倉庫工具&#xff0c;Hive可以將結構化的數據文件映射為一張數據庫表&#xff0c;并提供簡單的SQL查詢功能 Hive作為數…

可用于 線性判別、聚類分析 的R語言函數總結

一、判別分析 判別分析是一種分類技術&#xff0c;其通過一個已知類別的“訓練樣本”來建立判別準則&#xff0c;并通過預測變量來為未知類別的數據進行分類。根據判別的模型分為線性判別和非線性判別&#xff0c;線性判別中根據判別準則又分為Fisher判別&#xff0c;Bayes判別…

Linux 環境下搭建 Jenkins(Hudson)平臺

安裝jenkins&#xff1a;安裝 jenkins 有兩種方式&#xff1a;安裝方式一&#xff1a; [java] view plaincopysudo java -jar jenkins.war –httpPort18080 –ajp13Port18009 但是很多時候我們是使用SSH方式到目標機器上的&#xff0c;放我們關閉SSH連接時&#xff0c;這個命…