Ứng dụng Window Capture

Điều khiển ứng dụng PC với C#

5.0 (3 đánh giá)
Tạo bởi K9 Cập nhật lần cuối 19:32 15-09-2019 6.079 lượt xem 11 bình luận
Học nhanh

Danh sách bài học

Ứng dụng Window Capture

Dẫn nhập

Chào các bạn! Trong các bài trước, chúng ta đã hoàn thiện khóa học ĐIỀU KHIỂN ỨNG DỤNG PC VỚI THƯ VIỆN KAUTOHELPER

Ở bài này, mình sẽ giới thiệu đến bạn một tool tương tự mà Kteam phát triển, đó chính là Ứng dụng Window Capture. Bài này sẽ hướng dẫn tập trung vào phần hỗ trợ bạn việc lấy hình mẫu và sử dụng nó trong việc tìm ảnh ở window mà bạn muốn tìm tọa độ của ảnh đó rồi click thông qua Image Search.


Nội dung 

Nội dung bao gồm Source code & các lưu ý chính về quá trình thực hiện phần mềm. Kteam khuyến khích bạn cập nhập thêm nhiều kinh nghiệm cũng như hiểu chi tiết hơn về các kỹ thuật được đề cập trong bài học thông qua các video đính kèm.

Đừng quên Like Facebook hoặc +1 Google để ủng hộ Kteam và tác giả.

Để có đủ khả năng học hiểu các nội dung được đề cập đến trong khóa học. Bạn nên có tối thiểu kiến thức về các phần:

Ngoài ra, cũng nên trau dồi thêm kiến thức khác qua các project thực tế như:


Phần mềm sử dụng

Để việc thao tác theo hướng dẫn được tốt nhất bạn nên cài đặt phần mềm


Project tham khảo

MainWindow.xaml.cs

using KAutoHelper;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WindowCapture_Demo_Kteam
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var handle = AutoControl.FindWindowHandle ("Qt5QWindowIcon" == "" ? null : "Qt5QWindowIcon","" == "" ? null : "");
            AutoControl.SendClickOnPosition(handle, (int)628.4, (int)252.2);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var handle = AutoControl.FindWindowHandle("Qt5QWindowIcon" == "" ? null : "Qt5QWindowIcon", "" == "" ? null : "");

            var sub = (Bitmap)Bitmap.FromFile("appCenter.png");
            var main = (Bitmap)CaptureHelper.CaptureWindow(handle);

            var point = ImageScanOpenCV.FindOutPoint(main, sub);

            if (point != null)
            {
                AutoControl.SendClickOnPosition(handle, point.Value.X, point.Value.Y);
            }
        }

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            var handle = AutoControl.FindWindowHandle("Qt5QWindowIcon" == "" ? null : "Qt5QWindowIcon", "" == "" ? null : "");

            var sub = (Bitmap)Bitmap.FromFile("appCenter.png");
            var main = (Bitmap)CaptureHelper.CaptureWindow(handle);

            main = CaptureHelper.CropImage(main, new System.Drawing.Rectangle(184, 207, 880, 190));

            var point = ImageScanOpenCV.FindOutPoint(main, sub);

            if (point != null)
            {
                AutoControl.SendClickOnPosition(handle, point.Value.X + 184, point.Value.Y + 207);
            }
        }
    }
}

MainWindow.xaml

<Window x:Class="WindowCapture_Demo_Kteam.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WindowCapture_Demo_Kteam"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel>
        <Button Click="Button_Click">Click</Button>
        <Button Click="Button_Click_1">Tìm app center và mở nó ra</Button>
        <Button Click="Button_Click_2">Tìm app center và mở nó ra - Crop screen</Button>
    </StackPanel>
</Window>

 

Kết

Trong bài này, chúng ta đã tìm hiểu Ứng dụng Window Capture và cách sử dụng nó. Hy vọng đây sẽ là một tool hữu ích với bạn

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Và đừng quên “Luyện tập – Thử Thách – Không ngại khó


Tải xuống

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!

Phần mềm & Thư viện khác


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

K9

Nhà sáng lập Howkteam.com & tác giả các khóa học C#, Auto, Unity3D, Python....

Với mong muốn mang đến kiến thức chất lượng, miễn phí cho mọi người, với tâm huyết phá bỏ rào cản kiến thức từ việc giáo dục thu phí. Tôi đã cùng đội ngũ Kteam đã lập nên trang website này để thế giới phẳng hơn.
Hãy cùng chúng tôi lan tỏa kiến thức đến cộng đồng! 

Khóa học

Điều khiển ứng dụng PC với C#

Chào các bạn! Trong các khóa học trước của chuỗi khóa học Auto C# chúng ta đã cùng tìm hiểu về SELENIUM TRONG C# HTTP REQUEST VỚI C#.

Ở khóa học này, bạn sẽ được tìm hiểu thêm một phần khá thú vị, đó là LẬP TRÌNH ĐIỀU KHIỂN ỨNG DỤNG PC VỚI C#. Mục đích hướng tới là các bạn có thể làm auto bằng C# mà không cần dùng tới các ngôn ngữ như AutoIT, C++,…

Đánh giá

mkteam20 đã đánh giá 21:39 24-02-2020

verigut

Nguyễn Đình Nam đã đánh giá 20:29 22-09-2019

rất hữu ích cám ơn a Long :)

Fox đã đánh giá 20:27 15-09-2019

nhớ uống nước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
nekokuro245 đã bình luận 17:48 10-12-2019

Nếu hình ảnh chuyển động thì tìm khó hơn phải không a ?

namquacam đã bình luận 00:20 23-10-2019

Thân gửi @K9,

Phần mềm Window Capture anh viết có rất nhiều điểm em muốn học hỏi:

 - Thiết kế giao diện đẹp

 - Có phần hiển thị ảnh chụp linh hoạt

 - Có thể xác định chính xác vị trí click chuột trên khung hình đã chụp

Mặc dù đã cố gắng tìm hiểu nhiều ngày trên google nhưng e không thể tìm được cách để làm điều tương tự.

Nếu có thể, rất mong anh open source code của phần mềm này thì ae sẽ học hỏi được rất nhiều ạ.

Mong anh có thể chia sẻ source code phần mềm này được không ạ, em xin cảm ơn!

window8 đã bình luận 06:38 10-10-2019

mình dùng Window Capture thử Click Position thì không chạy. Thử trên LD muti thì nó click còn LDlayer thì nó không click, cả nox + memu cũng vậy. Không biết có phải do bên Emulator nó fix không team nhỉ. 

namquacam đã bình luận 12:04 16-09-2019
mình dùng VS2015 thì làm như thế nào để cài Spy++. mong ad giúp đỡ ạ.
Fox đã bình luận 20:27 15-09-2019

uống nước đi anh

Không có video.