وی چیٹ گروپ ایک عوامی جگہ ہے جہاں ہم خیال دوست جمع ہوتے ہیں ، اور مقداری تجارتی دائرے میں وی چیٹ گروپ کوئی استثنا نہیں ہے۔ حال ہی میں ، بہت سارے ایف ایم زیڈ صارفین پوچھتے ہیں کہ وہ وی چیٹ گروپ میں پیغامات کیسے بھیج سکتے ہیں۔ مثال کے طور پر ، ان کی حکمت عملی تجارتی سگنل بھیجتی ہے ، لیکن وہ لین دین کو خودکار نہیں کرنا چاہتے ہیں۔ وہ امید کرتے ہیں کہ روبوٹ کے ذریعہ فراہم کردہ سگنل کو حوالہ کے طور پر وی چیٹ گروپ میں بھیجا جاسکتا ہے۔
اس وجہ سے ، میں نے شاید وی چیٹ انٹرفیس کو دیکھا اور پایا کہ ایک سرکاری اکاؤنٹ کی ضرورت ہے ، جو خاص طور پر آسان نہیں ہے۔ لہذا میں نے ایک مختلف نقطہ نظر اختیار کرنے کا فیصلہ کیا اور مندرجہ ذیل حل آزمائے۔ میری محدود صلاحیت کی وجہ سے ، اس ضرورت کا صرف بنیادی کام مکمل کیا جاسکتا ہے ، اور یہ صرف حوالہ کے لئے ہے۔
میں نے لکھنے کے لئے Golang استعمال کرنے کا فیصلہ کیا، ایک Golang لائبریری استعمال کرنے کی ضرورت ہےgithub.com/go-vgo/robotgo
، بنیادی طور پر اس لائبریری کی طرف سے حل کی ضروریات کو حاصل کیا جاتا ہے.
پہلے ہم اپنے کمپیوٹر پر ایک سروس پروگرام چلائیں، کوڈ مندرجہ ذیل ہے:
package main
import (
"fmt"
"time"
"github.com/go-vgo/robotgo"
"net/http"
"io/ioutil"
)
func postMsg (msg string) {
fmt.Println("Start the mission!")
// process ids
processIds := "WeChat"
fpid, err3 := robotgo.FindIds(processIds)
robotgo.ActivePID(fpid[0])
time.Sleep(time.Millisecond * 2000)
if err3 == nil {
fmt.Println(fmt.Sprintf("find %s", processIds), "ids:", fpid)
/* Use image recognition method to get the coordinates of the click area
arrPicFileName := []string{"pic1.png", "pic2.png", "pic3.png"}
for _, name := range arrPicFileName {
picPath := fmt.Sprintf("/xxx/xxx/Desktop/xxx/%s", name)
fmt.Println("picPath:", fmt.Sprintf("/xxx/xxx/Desktop/xxx/%s", name))
fx, fy := robotgo.FindPic(picPath)
fmt.Println("move to :", fx+10, fy+10)
robotgo.MoveMouseSmooth(fx+10, fy+10)
time.Sleep(time.Millisecond * 2000)
robotgo.MouseClick("left", false)
robotgo.TypeStr(msg)
time.Sleep(time.Second)
robotgo.KeyTap("enter")
time.Sleep(time.Second)
}
*/
// /* Fixed area coordinates, the coordinates of the upper right corner of the screen are 0,0
arrArea := []map[string]int{
map[string]int{
"x" : 190,
"y" : 200,
},
map[string]int{
"x" : 190,
"y" : 200+70,
},
map[string]int{
"x" : 190,
"y" : 200+70+70,
},
}
for _, area := range arrArea {
robotgo.MoveMouseSmooth(area["x"], area["y"])
time.Sleep(time.Millisecond * 2000)
robotgo.MouseClick("left", false)
robotgo.TypeStr(msg)
time.Sleep(time.Second)
robotgo.KeyTap("enter")
time.Sleep(time.Second)
}
// */
}
fmt.Println("The mission is complete!")
}
func Handle (w http.ResponseWriter, r *http.Request) {
b, err := ioutil.ReadAll(r.Body)
if err != nil {
panic(err)
}
fmt.Println("req body:", string(b))
postMsg(string(b))
w.Write([]byte("finished!"))
}
func main () {
fmt.Println("listen http://127.0.0.1:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe("127.0.0.1:9090", nil)
}
اس سروس پروگرام کا کام درخواست کا انتظار کرنا ہے۔ درخواست موصول ہونے کے بعد ، کال کریںpostMsg
ہم چیٹ سافٹ ویئر ونڈو کو کھولنے کے لئے ماؤس کی نقل و حرکت کے نقلی کلکس اور ان پٹ آپریشنز کا ایک سلسلہ انجام دینے کے لئے فنکشن ، پہلے سے طے شدہ علاقے پر کلک کریں ، درخواست میں معلومات درج کریں ، اور بھیجیں ہم چیٹ گروپ میں
تصدیق اور دو منظرناموں کی جانچ کرنے کے لئے وی چیٹ ونڈو پر علاقے پر کلک کریں۔ پہلا وی چیٹ گروپ کا نام کی تصویر کو محفوظ کرنا ہے ، جب تصویر کا موازنہ اسکرین لوڈ کریںpostMsg
اس کا مطلب یہ ہے کہ آپ کو کلک کرنے کے لئے کوآرڈینیٹ تلاش کرنے کی ضرورت ہے۔ اس طریقہ کار کی شناخت کی شرح بہت زیادہ نہیں ہے ، اور بعض اوقات اسے پہچانا نہیں جاسکتا ہے۔ لہذا دوسرا حل استعمال کیا جاتا ہے ، جو زیادہ قابل اعتماد ہے۔ یہ کلک ایریا کو ٹھیک کرنا اور کلک ایریا کے کوآرڈینیٹ کا ایک سیٹ منصوبہ بنانا ہے ، یعنی:arrArea
مندرجہ بالا کوڈ میں متغیر۔ نقاط کہاں ہیں؟ جواب: اسکرین شاٹ کے پکسل نقاط کو دیکھیں اور T_T کی پیمائش کریں۔
ایف ایم زیڈ پلیٹ فارم حکمت عملی ٹیسٹ پروگرام:
function main() {
var msg = {
"type" : "msg",
"robotId" : _G(),
"msg" : "hello fmz!"
}
var n = 0
while(true) {
if(n == 20) {
var ret = HttpQuery("http://127.0.0.1:9090/data", JSON.stringify(msg))
Log("Exit")
break
}
n++
LogStatus(_D(), "n:", n)
Sleep(1000)
}
}
یہ حکمت عملی ایک ٹرانزیکشن سگنل بھیجنے کی نقالی کرتی ہے (جب n== 20، یہ فرض کرتے ہوئے کہ ٹرانزیکشن سگنل اس وقت ٹرگر ہوتا ہے ، اور اسے تجارت کرنا ممکن سمجھا جاتا ہے) ، یہ مقامی سروس کو درخواست بھیجتا ہےhttp://127.0.0.1:9090/data
.
ایف ایم زیڈ روبوٹ آپریشن (ڈاکر بھی مقامی طور پر چلتا ہے):
وی چیٹ ونڈو
دھکا پیغام ہے:
{"type":"msg","robotId":130350,"msg":"hello fmz!"}
یہ منصوبہ صرف آغاز ہے، اور اگر آپ کے پاس بہتر منصوبہ ہے، تو آپ اس پر بات کرنے کے لئے خوش آمدید ہیں.