On-line: Pasha, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 726
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.11.08 10:12. Заголовок: Что за переменная _HMG_MainHandle ?


Пытаюсь использовать функцию: GetWindow( _HMG_MainHandle, GW_HWNDFIRST )
на чистом хХарборе, т.е. вырезать ее из МиниГуи.

Но столкнулся с неопределением переменной _HMG_MainHandle.
Нашел ее в i_var.ch - #xtranslate _HMG_MainHandle => _HMG_SYSDATA\[30\]

Чему она равна ? Или как заменить для конкретного случая ?



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]


модератор




Пост N: 899
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 10.11.08 11:17. Заголовок: Andrey пишет: Чему ..


Andrey пишет:

 цитата:
Чему она равна ?


Это хэндл (указатель) главного окна программы в MiniGUI.

Andrey пишет:

 цитата:
как заменить для конкретного случая ?


Можно попробовать использовать возврат функции GetActiveWindow().



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 584
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.11.08 14:00. Заголовок: Andrey пишет: Или к..


Andrey пишет:

 цитата:
Или как заменить для конкретного случая ?


А какой конкретный случай, я что-то не понял..
Первый параметр GetWindow() - дескриптор (хэндл) окна, главного, не главного - без разницы.
_HMG_MainHandle, он же _HMG_SYSDATA[30], как уже отметил Григорий, содержит дескриптор главного окна программы с использованием MiniGUI.
А какой конкретно случай ? Какой GT?
GetActiveWindow c консолью не всегда дружит.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 727
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.11.08 00:15. Заголовок: Программа на хХарбор..


Программа на хХарборе:

FUNCTION MAIN()
LOCAL aStart := {}, nI

aStart := GetWindowList()
FOR nI:= 1 TO LEN(aStart)
? aStart[nI,1], aStart[nI,2]
NEXT

RETURN NIL

#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_OWNER 4
#define GW_CHILD 5

function GetWindowList()
LOCAL aWindows := {}, cTitle := ""
LOCAL hWnd := GetWindow( _HMG_MainHandle, GW_HWNDFIRST ) // Get the first window
WHILE hWnd != 0 // Loop through all the windows
if !empty(cTitle := GetWindowText( hWnd ))
AADD( aWindows, {hWnd, upper(cTitle)} )
endif
hWnd := GetWindow( hWnd, GW_HWNDNEXT ) // Get the next window
ENDDO
return aWindows

И в проект к этой программе добавляю из МиниГуи - c_windows.c


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 586
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 11.11.08 00:29. Заголовок: LOCAL hWnd := GetWin..


LOCAL hWnd := GetWindow( GetForegroundWindow(), GW_HWNDFIRST )

Только зачем это тебе нужно, ума не приложу.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 728
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.11.08 13:28. Заголовок: Петр пишет: Только..


Петр пишет:

 цитата:

Только зачем это тебе нужно, ума не приложу.


Чтобы получить список запущенных программ с их хендлом !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 729
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.11.08 15:40. Заголовок: Спасибо большое ПЕТР..


Спасибо большое ПЕТР и ГРИГОРИЙ !
Получил то что хотел... Если кому нужно, привожу пример:

*************************************************************************
* Copyright : (c) 2008, Verchenko Andrey. E-mail: 30195@mail.ru
* : Все права сохраняются.
* Date : 11/11/2008
* Avtor : Верченко Андрей
* Rem : Получение списка ХЕНДЛов окон и ИМЕН окон запущенных в системе
* : только на xHarbour'e
* : Отдельное СПАСИБО модераторам: Петру и Григорию
* : http://clipper.borda.ru/?1-1-0-00000159-000-0-1-1226399294
**************************************************************************
#include "inkey.ch"

FUNCTION MAIN()
LOCAL aStart := {}, nI, aMenu:={}, aItems:={}, nSelect, cTemp

STRFILE("","Process.lst")

aStart := GetWindowList() // Считать ХЕНДЛ окна и ИМЯ окна
FOR nI:= 1 TO LEN(aStart)
AADD( aMenu, { aStart[nI,1], HB_ANSITOOEM(aStart[nI,2]) } )
cTemp := STR(aStart[nI,1])+", "+HB_ANSITOOEM(aStart[nI,2])
AADD( aItems, cTemp )
STRFILE( cTemp+CHR(13)+CHR(10),"Process.lst",.T.)
NEXT

CLEAR SCREEN

@ 1,7 SAY "Хенл окна Название окна" COLOR("14/0")
DO WHILE LastKey() <> K_ESC

nSelect := Achoice( 2, 5, MaxRow()-2, 75, aItems, .T. )
IF nSelect <> 0
// Display selected file
MAXIMIZE( aStart[nSelect,1] )
KEYBOARD Chr(255) // sets Lastkey() to 255
Inkey()
ENDIF

ENDDO

RETURN NIL

#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_OWNER 4
#define GW_CHILD 5

function GetWindowList()
LOCAL aWindows := {}, cTitle := ""
LOCAL hWnd := GetWindow( GetForegroundWindow(), GW_HWNDFIRST )
WHILE hWnd != 0 // Loop through all the windows
if !empty(cTitle := GetWindowText( hWnd ))
AADD( aWindows, {hWnd, upper(cTitle)} )
endif
hWnd := GetWindow( hWnd, GW_HWNDNEXT ) // Get the next window
ENDDO
return aWindows

#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <shlobj.h>

HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult
{
HANDLE hMutex = CreateMutex( NULL, TRUE, (LPTSTR) hb_parc(1) );
hb_retl( GetLastError() == ERROR_ALREADY_EXISTS );
ReleaseMutex( hMutex );
}

HB_FUNC( GETFOREGROUNDWINDOW )
{
hb_retnl( (LONG) GetForegroundWindow() );
}

HB_FUNC( MINIMIZE )
{
ShowWindow( (HWND) hb_parnl(1), SW_MINIMIZE );
}

HB_FUNC( MAXIMIZE )
{
ShowWindow( (HWND) hb_parnl(1), SW_RESTORE );
}

HB_FUNC( GETWINDOWTEXT )
{
int iLen = SendMessage( (HWND) hb_parnl(1), WM_GETTEXTLENGTH, 0, 0 ) + 1;
char *cText = ( char * ) hb_xgrab( iLen );

GetWindowText( (HWND) hb_parnl(1), (LPTSTR) cText, iLen );

hb_retc( cText );
hb_xfree( cText );
}

HB_FUNC( GETWINDOW )
{
hb_retnl( (LONG) GetWindow((HWND) hb_parnl(1), hb_parni(2)) );
}

#pragma ENDDUMP


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 139
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет