[英]How can I send mouse clicks and drags to another program that is in the background?
[英]How can I send a pointer to something from one program to another?
我有一個程序可以創建對象“圖”,並用數據填充它們。 之后,我嘗試將指向這些對象的指針發送到diagram.exe,以便繪制圖表。 我使用_spawnv,並且diagram.exe獲得的指針與我發送的指針不同。 我做錯了什么? 有沒有更合適的方法呢? 提前致謝。
//這是調用diagram.exe的程序
#include<conio.h>
#include<math.h>
#include<process.h>
#include<iostream>
using std::cout;
using std::endl;
int main()
{
Diagram** diagrams = new Diagram*[2];
diagrams[0] = new Diagram(1001, "sin(x)");
diagrams[1] = new Diagram(150, "atan(x)");
diagrams[2] = NULL;
double x = -2.0;
for(int i = 0; i < 1001; i++)
{
diagrams[0]->points[i].x = x;
diagrams[0]->points[i].y = sin(x);
diagrams[0]->points[i].flag = true;
diagrams[0]->points[i].radius = 4;
diagrams[1]->points[i].x = x;
diagrams[1]->points[i].y = atan(x);
diagrams[1]->points[i].flag = true;
diagrams[1]->points[i].radius = 5;
x += 0.004;
}
cout << "CallDiagram.exe: diagrams: " << (void*)diagrams << endl;
char* args[3] = {"diagram.exe", (char*)diagrams, NULL};
_spawnv(_P_WAIT, "..\\..\\diagram\\Debug\\diagram.exe", args);
_getch();
delete diagrams[0];
delete diagrams[1];
delete [] diagrams;
return 0;
}
//diagram.cpp
#include "diagram.h"
#include "DrawDiagram.h"
int main(int argc, char* argv[])
{
if(argc <= 1)
{
cout << "\ndiagram.exe: No arguments!" << endl;
return 1;
}
Diagram** diagrams = (Diagram**)argv[1];//NULL;
cout << "diagram.exe: diagrams: " << (void*)diagrams << endl;
您不能將指針從一個程序發送到另一個程序。 您可以創建一些共享內存,這兩個應用程序都可以打開該共享內存,並使用該共享內存存儲要共享的數據。
在Windows上,您可以使用CreateFileMapping
創建這樣的共享內存,第二個應用程序使用OpenFileMapping
在另一端獲取它。
請注意,這比在文件中發送數據更容易,因為在另一部分嘗試使用數據之前,您需要確保數據已同步並完全寫入共享內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.