imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 07.04.2007, 21:42     # 1
shift_on_line
Guest
 
Сообщения: n/a

Заголовок в Delphi 6

Как в Delphi 6 получить заголовок активного окна?
 
Старый 08.04.2007, 17:10     # 2
Bishop
Member
 
Аватар для Bishop
 
Регистрация: 18.08.2004
Пол: Male
Сообщения: 235

Bishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собой
примерно вот так:
var
hWindow: HWND;
sText: array [0..255] of char;
begin
hWindow = GetForegroundWindow();
GetWindowText(hWindow, @sText, 255);
end;
Bishop вне форума  
Старый 08.04.2007, 20:55     # 3
shift_on_line
Guest
 
Сообщения: n/a

Спасибо. Работает
 
Старый 09.04.2007, 12:56     # 4
shift_on_line
Guest
 
Сообщения: n/a

Что-то заголовки неподходят, как получать такие:

http://st1.risunok.net/7620/122.JPG

Например в опере в заголовке отображается название страници, а там получается название программы, как его получить??
 
Старый 09.04.2007, 18:55     # 5
Bishop
Member
 
Аватар для Bishop
 
Регистрация: 18.08.2004
Пол: Male
Сообщения: 235

Bishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собой
shift_on_line,
там описание программы и версия файла.
На C++ это выглядит так (использовался код отсюда и отсюда):
Код:
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <Psapi.h>
#include <strsafe.h>

void PrintProcessNameAndID(DWORD processID)
{
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
	TCHAR szDescription[MAX_PATH];
	TCHAR szVersion[MAX_PATH];

    // Get a handle to the process.
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
                                  PROCESS_VM_READ,
                                  FALSE, processID);
    // Get the process name.
    if (NULL != hProcess)
    {
	// файл образа
	GetModuleFileNameEx(hProcess, NULL, szProcessName, MAX_PATH);
	DWORD temp, sizeInfo;
	sizeInfo = GetFileVersionInfoSize(szProcessName, &temp);
	if (sizeInfo == 0) // не содержит информации о версии
		return;
	void *pData = new char[sizeInfo];
	void *lplpBuffer = new char[sizeInfo];
	GetFileVersionInfo(szProcessName, 0, sizeInfo, pData);

	struct LANGANDCODEPAGE {
		WORD wLanguage;
		WORD wCodePage;
	} *lpTranslate;
	UINT cbTranslate;

	// список языков, на которых представлена инфа
	VerQueryValue(pData, 
		TEXT("\\VarFileInfo\\Translation"),
		(LPVOID*)&lpTranslate,
		&cbTranslate);

	// описание файла
	TCHAR SubStr[50];
	StringCchPrintf(SubStr, 50,
		TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
		lpTranslate[0].wLanguage,
		lpTranslate[0].wCodePage);// хватит одного

	VerQueryValue(pData, SubStr, &lplpBuffer, (PUINT)&temp);
	if (temp > 0)
		wcscpy_s(szDescription, MAX_PATH, (wchar_t *)lplpBuffer);
		
	// версия файла
	StringCchPrintf(SubStr, 50,
		TEXT("\\StringFileInfo\\%04x%04x\\FileVersion"),
		lpTranslate[0].wLanguage,
		lpTranslate[0].wCodePage);// хватит одного

	VerQueryValue(pData, SubStr, &lplpBuffer, (PUINT)&temp);
	if (temp > 0)
		wcscpy_s(szVersion, MAX_PATH, (wchar_t *)lplpBuffer);

	delete pData;
	 _tprintf(TEXT("%s %s \n"), szDescription, szVersion);
    }
    CloseHandle(hProcess);
}

int _tmain(int argc, _TCHAR* argv[])
{
	DWORD aProcesses[1024], cbNeeded, cProcesses;
	if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
		return 1;
	cProcesses = cbNeeded / sizeof(DWORD);
	for (UINT i = 0; i < cProcesses; i++)
		PrintProcessNameAndID(aProcesses[i]);
	return 0;
}
Хотя, как-то коряво вышло. Чисто для демонстрации. А на Delphi сам адаптируй
Bishop вне форума  
Старый 10.04.2007, 15:46     # 6
Bishop
Member
 
Аватар для Bishop
 
Регистрация: 18.08.2004
Пол: Male
Сообщения: 235

Bishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собойBishop Имеются все основания чтобы гордиться собой
shift_on_line,
или воспользуйся компонентом TCEVersionInfo v.1.0
_http://www.torry.net/vcl/system/versioninfo/TCEVersionInfo.zip

Нужно вызвать функцию GetInfo с именем интересующего exe файла, а потом прочитать описание из свойства FileDescription и версию из FileVersion.
Bishop вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.