लिनक्स कॉल xprop में एक कमांड है जो एक्स सर्वर में विंडो गुणों को प्रदर्शित करने के लिए उपयोगिता है। लिनक्स xprop -root
में आपको रूट विंडोज गुण और अन्य सक्रिय प्रोग्राम भी मिलते हैं।
xprop -root | grep _NET_ACTIVE_WINDOW\(WINDOW\)
सिर्फ सक्रिय विंडो आईडी प्राप्त करने के लिए: तो आप इस आदेश का उपयोग कर सक्रिय विंडो के आईडी प्राप्त कर सकते हैं (बिना "_NET_ACTIVE_WINDOW (विंडो): खिड़की आईडी #" पंक्ति के आरंभ में) का उपयोग इस आदेश:
myid=xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}'
xprop एक विशेषता कॉल मैं है:
xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}'
अब आप एक उपयोगकर्ता निर्धारित चर में इस आदेश का उत्पादन बचा सकता है घ। यह तर्क उपयोगकर्ता को कमांड लाइन पर विंडो आईडी का चयन करने की अनुमति देता है। हम उत्पादन में _NET_WM_PID (कार्डिनल) के लिए दिखना चाहिए ... तो हम इस आदेश का उपयोग करें:
xprop -id $myid | awk '/_NET_WM_PID\(CARDINAL\)/{print $NF}'
यह आप सर्वोच्च सक्रिय विंडो प्रक्रिया ID देता है।
अधिक Trickey हो सकता है और सिर्फ 1 आदेश में सभी काम करने के लिए ...:
xprop -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}') | awk '/_NET_WM_PID\(CARDINAL\)/{print $NF}'
अब मैं इन आदेशों मेरी सी के माध्यम से ++ प्रोग्राम चला सकते हैं (linux में) popen समारोह, हड़पने stdout और प्रिंट का उपयोग कर या बचाओ। पॉपन एक पाइप बनाता है ताकि हम उस कार्यक्रम के आउटपुट को पढ़ सकें जिसे हम आमंत्रित कर रहे हैं।
(आप भी उपयोग करें '/ proc' फाइल सिस्टम कर सकते हैं और एक पीआईडी ('/ proc/YOUR_PID/स्थिति') का अधिक विवरण प्राप्त)
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
inline std::string exec(char* cmd) {
FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
return result;
}
int main()
{
//we uses \\ instead of \ (\ is a escape character) in this string
cout << exec("xprop -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\\(WINDOW\\)/{print $NF}') | awk '/_NET_WM_PID\\(CARDINAL\\)/{print $NF}'").c_str();
return 0;
}
स्रोत
2010-01-12 20:51:03
आपका ऐप अपनी खुद की पिड जानता है, क्या आप चाहते हैं? – Tobu
क्यूटी एक भाषा नहीं है, यह टूलकिट है। क्यूटी सी ++ में लिखा गया है, लेकिन कई अन्य भाषाओं के लिए बाइंडिंग है। क्या आप सी ++ का उपयोग कर रहे हैं? –
@ जेम्सपोली क्यूटी पूरी तरह से एक भाषा के विपरीत नहीं है जिसमें यह 'एक बार लिखना, हर जगह संकलित' उपकरण के रूप में कार्य कर सकता है, जहां पीओएसआईक्स कॉल जैसे कुछ पोर्टिंग को WinAPI, एंड्रॉइड इत्यादि के लिए अलग कोड लिखने की आवश्यकता होगी .. – Wyatt8740