Цитата: <code>
</code>
Вместо угловых квадратные скобки должны быть.
Цитата: win w[];
Нужно указывать размер массива.
Цитата: win #w
Указатель на win нельзя передать.
Найти окна блокнота, активировать их в том порядке, в котором они расположены на панели задач:
CODE:#define TH32CS_SNAPPROCESS 2
external(INT, "CreateToolhelp32Snapshot", "CreateToolhelp32Snapshot", "Kernel32.dll");
external(INT, "Process32First", "Process32First", "Kernel32.dll");
external(INT, "Process32Next", "Process32Next", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
win tmp[100];
win w[10];
int k = FindWindow("notepad.exe"); // имя процесса
messagebox("Всего найдено окон: " +format(k));
for(int i=0; i<k; i++)
{
activate(w[i]);
sleep(500);
}
function FindWindow(string NameProcess)
{
int Count=0;
char PROCESSENTRY32[296];
int PID;
int hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot)
{
writeaddress(sizearray(PROCESSENTRY32), address(#PROCESSENTRY32[0]));
Process32First(hSnapshot, address(#PROCESSENTRY32[0]));
if(format(#PROCESSENTRY32[36]) == NameProcess)
{
PID = codhexi(#PROCESSENTRY32[8], 4);
if(listwinprocess(#tmp[0], PID) > 0)
{
w[Count] = tmp[0];
setwindowparam(w[Count]);
Count++;
}
}
while(Process32Next(hSnapshot, address(#PROCESSENTRY32[0])))
{
if(format(#PROCESSENTRY32[36])==NameProcess)
{
PID = codhexi(#PROCESSENTRY32[8], 4);
if(listwinprocess(#tmp[0], PID) > 0)
{
w[Count] = tmp[0];
setwindowparam(w[Count]);
Count++;
}
}
}
CloseHandle(hSnapshot);
}
return Count;
} |