精华内容
下载资源
问答
  • windows实现窗口移动

    千次阅读 2018-04-20 11:16:13
    代码如下: #include<windows.h> void main() { HWND hwnd; int i; hwnd=FindWindow(NULL,"扫雷"); while(true) { i=0; for(;i<200;... { //移动窗口 ...

    代码如下:

    #include<windows.h>
    void main()
    {
    
        HWND hwnd;
        int i;
        hwnd=FindWindow(NULL,"扫雷");     
        while(true)
        {
            i=0;
            for(;i<200;i++)
            {       //移动窗口
                MoveWindow(hwnd,100+i,100+i,500,600,1);
                Sleep(100);
            }
            for(i=199;i>=0;i--)
            {       //移动窗口
                MoveWindow(hwnd,100+i,100+i,500,600,1);
                Sleep(100);
            }
        }
    }

    实现的效果如下:
    这里写图片描述

    展开全文
  • 如果大家看过一些游戏sdk中的功能,现在大多都有悬浮窗口这个功能。如360,uc等等。。 这里不需要定义service,只需要这只WindowsManager中的LayoutParams就可以达到这个悬浮框可以绑定界面的功能。 话...

    如果大家看过一些游戏sdk中的功能,现在大多都有悬浮窗口这个功能。如360,uc等等。。

    这里不需要定义service,只需要这只WindowsManager中的LayoutParams就可以达到这个悬浮框可以绑定界面的功能。


    话不多说,先上代码:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
    1. public class FloatBox extends BasicView {  
    2.     LinearLayout mFloatLayout;  
    3.     FloatButton floatView;  
    4.     String TAG = "FloatBox";  
    5.     WindowManager.LayoutParams windowParams;  
    6.     WindowManager mWindowManager;  
    7.     float mStartX = 0;  
    8.     float mStartY = 0;  
    9.   
    10.     public FloatBox(Context context, AttributeSet attrs, int defStyle) {  
    11.         super(context, attrs, defStyle);  
    12.         // TODO Auto-generated constructor stub  
    13.     }  
    14.   
    15.     public FloatBox(Context context, AttributeSet attrs) {  
    16.         super(context, attrs);  
    17.         // TODO Auto-generated constructor stub  
    18.     }  
    19.   
    20.     public FloatBox(Context context, String str) {  
    21.         super(context, str);  
    22.         // TODO Auto-generated constructor stub  
    23.     }  
    24.   
    25.     public FloatBox(Context context) {  
    26.         super(context);  
    27.         // TODO Auto-generated constructor stub  
    28.     }  
    29.   
    30.     @Override  
    31.     protected void init(Context context) {  
    32.         // TODO Auto-generated method stub  
    33.         initWindowBox(context);  
    34.     }  
    35.       
    36.   
    37.     private void initViewBox(Context context){  
    38.         mFloatLayout = new LinearLayout(context);  
    39.         LinearLayout.LayoutParams mFloatLayoutLP = new LinearLayout.LayoutParams(  
    40.                 LinearLayout.LayoutParams.WRAP_CONTENT,  
    41.                 LinearLayout.LayoutParams.WRAP_CONTENT);  
    42.         mFloatLayout.setLayoutParams(mFloatLayoutLP);  
    43.         mFloatLayout.setOrientation(LinearLayout.VERTICAL);  
    44.         floatView = new FloatButton(context);  
    45.         LinearLayout.LayoutParams floatViewLp = new LinearLayout.LayoutParams(  
    46.                 MetricUtil.getDip(context, 50), MetricUtil.getDip(context, 50));  
    47.         floatView.setLayoutParams(floatViewLp);  
    48.         mFloatLayout.addView(floatView);  
    49.     }  
    50.     /** 
    51.      * 用windowManager来添加box 
    52.      * @param context 
    53.      */  
    54.     private void initWindowBox(Context context){  
    55.         windowParams = new WindowManager.LayoutParams();  
    56.         mWindowManager = (WindowManager) context  
    57.                 .getSystemService(context.WINDOW_SERVICE);  
    58.         // 设置window type 这里使用的type是1000 - 2000之间的,需要绑定token  
    59.         // 如果使用2000以上的类型的话,一般适用于桌面上的悬浮窗.  
    60.         windowParams.type = WindowManager.LayoutParams.TYPE_APPLICATION;  
    61.         windowParams.format = PixelFormat.RGBA_8888;  
    62.         windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;  
    63.         windowParams.gravity = Gravity.LEFT | Gravity.TOP;  
    64.         // 以屏幕左上角为原点,设置x、y初始值,相对于gravity  
    65.         windowParams.x = 0;  
    66.         windowParams.y = 0;  
    67.         // 长宽设置  
    68.         windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;  
    69.         windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;  
    70.   
    71.         mFloatLayout = new LinearLayout(context);  
    72.         LinearLayout.LayoutParams mFloatLayoutLP = new LinearLayout.LayoutParams(  
    73.                 LinearLayout.LayoutParams.WRAP_CONTENT,  
    74.                 LinearLayout.LayoutParams.WRAP_CONTENT);  
    75.         mFloatLayout.setLayoutParams(mFloatLayoutLP);  
    76.         mFloatLayout.setOrientation(LinearLayout.VERTICAL);  
    77.           
    78.         // 绑定token  
    79.         windowParams.token = mFloatLayout.getWindowToken();  
    80.         // 添加layout  
    81.         mWindowManager.addView(mFloatLayout, windowParams);  
    82.         floatView = new FloatButton(context);  
    83.         LinearLayout.LayoutParams floatViewLp = new LinearLayout.LayoutParams(  
    84.                 MetricUtil.getDip(context, 50), MetricUtil.getDip(context, 50));  
    85.         floatView.setLayoutParams(floatViewLp);  
    86.         mFloatLayout.addView(floatView);  
    87.         mFloatLayout.measure(View.MeasureSpec.makeMeasureSpec(0,  
    88.                 View.MeasureSpec.UNSPECIFIED), View.MeasureSpec  
    89.                 .makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));  
    90.         Log.i(TAG, "Width/2--->" + floatView.getMeasuredWidth() / 2);  
    91.         Log.i(TAG, "Height/2--->" + floatView.getMeasuredHeight() / 2);  
    92.   
    93.         floatView.setOnTouchListener(new OnTouchListener() {  
    94.   
    95.             @Override  
    96.             public boolean onTouch(View v, MotionEvent event) {  
    97.                 // TODO Auto-generated method stub  
    98.                 System.out.println("onTouch ");  
    99.                 switch (event.getAction()) {  
    100.                 case MotionEvent.ACTION_DOWN:  
    101.                       
    102.                     break;  
    103.                 case MotionEvent.ACTION_MOVE:  
    104.                     //加一个值,更方便点击  
    105.                     if(Math.abs(event.getRawX() - mStartX) > 30){  
    106.                         mStartX = event.getRawX();    
    107.                     }  
    108.                     if(Math.abs(event.getRawY() - mStartY) > 30){  
    109.                         mStartY = event.getRawY();  
    110.                     }  
    111.                     updatePosition();  
    112.                     break;  
    113.                 case MotionEvent.ACTION_UP:  
    114.                       
    115.                     break;  
    116.                 default:  
    117.                     break;  
    118.                 }  
    119. //              if(event.getAction() == MotionEvent.ACTION_MOVE){  
    120. //            
    121. //              Log.i(TAG, "event.getRawX()--->" + event.getRawX());  
    122. //              Log.i(TAG, "event.getRawX()--->" + event.getRawY());  
    123. //              mStartX = event.getRawX();  
    124. //              mStartY = event.getRawY();  
    125. //              }else if(event.getAction() == MotionEvent.ACTION_UP){  
    126. //                  return true;  
    127. //              }  
    128.                 return false;  
    129.             }  
    130.         });  
    131.         final Context mcontext = context;  
    132.         floatView.setOnClickListener(new OnClickListener() {  
    133.   
    134.             @Override  
    135.             public void onClick(View v) {  
    136.                 // TODO Auto-generated method stub  
    137.                 Toast.makeText(mcontext, "floatView onclick"1000).show();  
    138.                 return;  
    139.             }  
    140.         });  
    141.     }  
    142.       
    143.       
    144.     private void updatePosition(){  
    145.         windowParams.x = (int) (mStartX - floatView  
    146.                 .getMeasuredWidth() / 2);  
    147.         windowParams.y = (int) (mStartY - floatView  
    148.                 .getMeasuredHeight() / 2);  
    149.         // refresh  
    150.         Log.i(TAG, "x--->" + windowParams.x);  
    151.         Log.i(TAG, "y--->" + windowParams.y);  
    152.         mWindowManager.updateViewLayout(mFloatLayout, windowParams);  
    153.     }  
    154.   
    155.     public void showBox() {  
    156.         mFloatLayout.setVisibility(View.VISIBLE);  
    157.     }  
    158.   
    159.     public void hideBox() {  
    160.         mFloatLayout.setVisibility(View.GONE);  
    161.     }  
    162.   
    163.     public void removeBox() {  
    164.         mWindowManager.removeView(mFloatLayout);  
    165.     }  
    166.   
    167. }  


    然后,以下是自定义button的代码:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
    1. public class FloatButton extends Button {  
    2.   
    3.     public FloatButton(Context context, AttributeSet attrs, int defStyle) {  
    4.         super(context, attrs, defStyle);  
    5.         // TODO Auto-generated constructor stub  
    6.         init();  
    7.     }  
    8.   
    9.     public FloatButton(Context context, AttributeSet attrs) {  
    10.         super(context, attrs);  
    11.         // TODO Auto-generated constructor stub  
    12.         init();  
    13.     }  
    14.   
    15.     public FloatButton(Context context) {  
    16.         super(context);  
    17.         // TODO Auto-generated constructor stub  
    18.         init();  
    19.     }  
    20.   
    21.     private void init() {  
    22.         Decorator.setStateImage(this,  
    23.                 ResourceLoader.getBitmapDrawable("appicon_normal.png"),  
    24.                 ResourceLoader.getBitmapDrawable("appicon_hover.png"),  
    25.                 ResourceLoader.getBitmapDrawable("appicon_normal.png"));  
    26.     }  
    27. }  
    展开全文
  • 启动定时器检测记事本的位置大小和是否关闭 self.tmpHwnd = None self.checkTimer = QTimer(self, timeout=self.checkWindow) ... self.hwnd = win32gui.FindWindow('WTWindow', '窗口名字') if win32gui.Get

    启动定时器检测记事本的位置大小和是否关闭

        self.tmpHwnd = None
        self.checkTimer = QTimer(self, timeout=self.checkWindow)
        self.checkTimer.start(10)  # 10毫秒比较流畅
    
    def checkWindow(self):
        # 查找
        self.hwnd = win32gui.FindWindow('WTWindow', '窗口名字')
        if win32gui.GetForegroundWindow() == self.hwnd:
    
            if Demo.isVisible() == False:
                Demo.setVisible(True)
        else:
            print(win32gui.GetForegroundWindow())
            if Demo.isVisible() == True:
                Demo.setVisible(False)
    
    
        if self.tmpHwnd and not self.hwnd:
            # 表示父窗口被关闭了
            self.checkTimer.stop()
            self.close()  # 关闭自己
            return
    
        if not self.hwnd:
            return
        self.tmpHwnd = self.hwnd
        # 获取位置
        rect = win32gui.GetWindowRect(self.hwnd)
        self.move(rect[0]+300, rect[1]+20)
    
    展开全文
  • 无边框窗口移动到桌面边缘时不会自动全屏或者半屏,网上有些资料能实现全屏或者半屏,但是窗口变化过程中没有动画。所以我想实践下能不能实现windows原生的效果。
  • 027-Mac触摸板实现窗口移动

    千次阅读 2018-12-08 23:22:19
    其中一个需要掌握的功能就是使用鼠标进行窗口移动,这个其实我在Windows的操作系统上也都可以用。 网络上找了一下,其实Mac内置了同样的功能只是不是默认开启的,开启之后相应的功能也就可以使用了。...

    使用了一段时间的Mac,一直配合鼠标使用,但是逐渐发现鼠标不是很好用,比较好用的还是触摸板的功能。

    悄悄注意过其他的Mac用户,发现很多人根本不用鼠标,直接使用触摸板,看起来这个技能还是需要掌握一下。其中一个需要掌握的功能就是使用鼠标进行窗口移动,这个其实我在Windows的操作系统上也都可以用。

    网络上找了一下,其实Mac内置了同样的功能只是不是默认开启的,开启之后相应的功能也就可以使用了。具体的开启方式如下:

    首先是打开设置,然后点酒上面的辅助功能,出现下面的界面。

    接着按照上面的截图选择鼠标和触摸板,之后选择右边的触控板选项。

    在这个地方,按照上面截图中选择启用拖移。之后,可以使用触控板进行窗口移动了。使用的方法:单击窗口一次,第二次单击后不松开手指直接移动。其实,再次理解一下这个设计逻辑,应该可以理解为单击激活一下窗口,然后直接使用手指进行拖动。

    展开全文
  • 移动windows桌面图标实现简单动画这个操作需要关闭 桌面图标的自动排列image.png#include#include#include#include#include#define N 200typedef struct node {int x; // 横坐标int y; // 纵坐标int fx; // x 运动...
  • VC实现鼠标移动对话框窗口

    千次阅读 2012-04-18 12:17:33
    本实例主要实现了通过鼠标的移动,来实现窗口的同步移动。即鼠标左键按下后并对鼠标进行移动,从而窗口跟随鼠标移动,直到鼠标左键抬起,其具体思路是重载“WM_NCHITTEST”消息,在生成的“OnNcHitTest”函数中添加...
  • 仿windowsXP窗口

    2018-07-19 16:32:29
    仿windowsXP系统的窗口,纯js实现.可实现窗口的各个方向的拖拽扩大缩小窗口,窗口顶部拖拽移动.窗口顶部双击最大化/还原.按钮最大/最小化等功能
  • 下载请到: ... 基于FindWindow和SetWindowPos实现, 其中的flag设置请参考: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindo...
  • 在WinForm程序中,要移动没有标题栏的窗口,基本的实现思路是监听需要拖动窗口内的控件的鼠标事件,然后将鼠标位置发送给窗口进行相应的位移就可以了。通过借用Windows API也可以很容易实现这一点,比如像下面这样。...
  • 无标题栏的窗体的拖动功能实现,Delphi添加一个可拖动窗体的按钮,通过对此按钮的控制可移动窗体,实现按住标题栏移动窗口的功能,无标题栏也就不能显示最大化、最小化和关闭窗口的功能,因此本程序自定义了一个关闭...
  • Winform窗口去边框实现可以移动

    千次阅读 2018-03-21 16:38:16
    可参考链接:... 边框去掉之后 会发现窗口无法最大最小化和移动。 1 在标题栏处新建三个panel,分别为标题栏,最大最小化按钮和关闭按钮将后面几个pane...
  • 在WinForm程序中,要移动没有标题栏的窗口,基本的实现思路是监听需要拖动窗口内的控件的鼠标事件,然后将鼠标位置发送给窗口进行相应的位移就可以了。通过借用Windows API也可以很容易实现这一点,比如像下面这样。...
  • 本次选择窗口截图一共3步:鼠标按下、移动、弹起。 知识点:改变鼠标图标、截图函数封装、窗口画图 本节新学习AIP: LoadCursor SetCursor(m_hCursor); SetCapture(); CreateDC CreateCompatibleDC ...
  • 通常我们在实现一个自定义Qt窗口的拖动时,我们都要记录鼠标的按下位置和鼠标释放位置,然后通过move,进行移动。这样可以实现,但是比较繁琐,我在网上找到这样一个适用于windows平台的简单方法。 引入windows库 #...
  • 实现鼠标拖动标题栏不移动窗口 protectedoverridevoidWndProc(refSystem.Windows.Forms.Messagem) { base.WndProc(refm);//基类执行 if(m.Msg==132)//鼠标...
  • 通过API简单实现QQ窗口移动。获取窗口句柄HWND win = FindWindowA("TXGuiFoundation","QQ");设置窗口位置SetWindowPos(win,NULL,1366*data1/100,768*data2/100,400,400,0);隐藏程序运行时的黑窗口#pragma comment...
  • 在duilib框架下进行的界面显示,windows有个message是WM_...用户移动child_window后,通过窗口名找到对应的两个窗口(此处start_form是跟随窗口,child_window是用户控制移动窗口),获取child_window的坐...
  • C语言实现窗口抖动

    2020-12-25 17:56:01
    本文实例为大家分享了C语言窗口抖动的具体实现代码,供大家参考,具体内容如下 #include "stdafx.h" #include #include<Windows> int main() { int shake_time = 50; //休眠的时间,为5毫秒 int shake_distance ...
  • 摘 要:本文运用Windows API函数和VB的基本编程技巧与方法,实现了不规则图片形状窗口及其窗口移动。本方法对于创建其它特殊窗口实现图片、图像文件的分段读取、显示和裁剪等功能,都具有一定的参考作用。 ...
  • 文章目录Qt 无边框窗口移动到桌面边缘动画说明实现思路透明窗口帮助类效果标题 代码分享 说明 无边框窗口在移动到桌面边缘时不会自动全屏或者半屏,网上有些资料能实现全屏或者半屏,但是窗口变化过程中没有动画。...
  •  移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口,就需要 用鼠标单击窗口标题条以外区域来移动窗口。有两种方法可以达到这一目标。 方法一:当窗口确定鼠标位置时,Windows窗口发送...
  • 简单点说,是在windows实现窗口拖动和改变大小,一种方法是重载mousePressEvent系列全家福函数,然后在mouseMoveEvent中实现边移鼠标窗口就一边重绘。这种方法网上资料很多,见下:...
  • VB实现拖动没有标题栏的窗口,移动没有标题栏的窗口,大家知道,移动窗口主要是鼠标左键按住窗口标题栏移动位置,但现在这个窗体没有标题栏,那么是如何实现窗口移动呢?通过本VB源码实例,你就会明白了。 运行环境...
  • 用鼠标单击窗口标题条以外区域移动窗口移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口, 就需要用鼠标单击窗口标题条以外区域来移动窗口。有两种方法可以达到这一目标。 方法一:当窗口...
  • 移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口,就需要用鼠标单击窗口标题条以外区域来移动窗口。有两种方法可以达到这一目标。 方法一:当窗口确定鼠标位置时,Windows窗口发送WM_...
  • Imports System.Windows.Forms Public Class Form1 '****************************************** Private oOriginalRegion As Region = Nothing ' 用于窗体移动 Private bFormDragging As B

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 943
精华内容 377
关键字:

windows实现窗口移动