Пример #1
0
BOOL CTalkMasterConsoleDlg::insertMenuItem( CMenu *menu, int row, char *buffer, int ID )
{
	MENUITEMINFO MenuItem = { 
		sizeof(MENUITEMINFO),
		MIIM_ID | MIIM_TYPE,
		MFT_STRING,
		NULL,
		ID_VIEW_PREFERENCES,
		NULL,
		NULL,
		NULL,
		NULL,
		getResourceString(IDS_STRING_PREFERENCES).GetBuffer(),
		getResourceString(IDS_STRING_PREFERENCES).GetLength()+1
//		NULL
	};

	MenuItem.dwTypeData = (LPSTR)buffer;
	MenuItem.cch = strlen(buffer)+1;
	MenuItem.wID = ID;

	menu->InsertMenuItem(row, &MenuItem, TRUE);

	return(TRUE);
}
Пример #2
0
bool NEResources::readResourceTable(uint32 offset) {
    if (!_exe)
        return false;

    if (!_exe->seek(offset))
        return false;

    uint32 align = 1 << _exe->readUint16LE();
    uint16 typeID = _exe->readUint16LE();

    while (typeID != 0) {
        // High bit of the type means integer type
        WinResourceID type;
        if (typeID & 0x8000)
            type = typeID & 0x7FFF;
        else
            type = getResourceString(*_exe, offset + typeID);

        uint16 resCount = _exe->readUint16LE();

        _exe->skip(4); // reserved

        for (int i = 0; i < resCount; i++) {
            Resource res;

            // Resource properties
            res.offset = _exe->readUint16LE() * align;
            res.size   = _exe->readUint16LE() * align;
            res.flags  = _exe->readUint16LE();
            uint16 id  = _exe->readUint16LE();
            res.handle = _exe->readUint16LE();
            res.usage  = _exe->readUint16LE();

            res.type = type;

            // High bit means integer type
            if (id & 0x8000)
                res.id = id & 0x7FFF;
            else
                res.id = getResourceString(*_exe, offset + id);

            if (typeID & 0x8000 && ((typeID & 0x7FFF) < ARRAYSIZE(s_resTypeNames)) && s_resTypeNames[typeID & 0x7FFF][0] != 0)
                debug(2, "Found resource %s %s", s_resTypeNames[typeID & 0x7FFF], res.id.toString().c_str());
            else
                debug(2, "Found resource %s %s", type.toString().c_str(), res.id.toString().c_str());

            _resources.push_back(res);
        }

        typeID = _exe->readUint16LE();
    }

    return true;
}
Пример #3
0
void CTalkMasterConsoleDlg::initSystemTray()
{
	m_nid.cbSize = sizeof(m_nid);
	m_nid.hWnd = this->m_hWnd;
	m_nid.uID = WM_USER+0x1000;
	m_nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
	m_nid.uCallbackMessage = WM_USER+0x1000;
#ifdef	PRIMEX_BUILD
	m_nid.hIcon = theApp.LoadIcon(IDR_MAINFRAME);
#else
	m_nid.hIcon = theApp.LoadIcon(IDI_ICON_TASK_BAR);
#endif
//	m_nid.uVersion = 5;
#ifdef PRIMEX_BUILD
	strcpy( m_nid.szTip ,getResourceString(IDS_STRING184));
#else
	strcpy( m_nid.szTip ,getResourceString(IDS_STRING185));
#endif

//	Shell_NotifyIcon( NIM_SETVERSION, &m_nid );
}
Пример #4
0
QString FhoRes::getResourceString(QString &resourceIdentifier) {
	// e.g. '@%SystemRoot%\system32\SHELL32.dll,-32517'

	QString resourceString;

	QStringList split = resourceIdentifier.split(",", QString::SkipEmptyParts);
	if (split.size() == 2) {
		QString resourceName = split.at(0);
		QString resourceIdStr = split.at(1);
		int resourceId = resourceIdStr.toInt();

		resourceString = getResourceString(resourceName, resourceId);
	}

	return resourceString;
}
Пример #5
0
QString FhoRes::getResourceString(QString &resourceName, int resourceId) {
	// e.g. '@%SystemRoot%\system32\SHELL32.dll' ,-32517

	QString resourceString;

	QString libraryName =  FhoEnv::expand(resourceName);
	// remove leading @
	if (libraryName.startsWith('@')) {
		libraryName = libraryName.right(libraryName.length()-1);
	}

	// can we do this without loading the library (like for icons via ExtractIcon instead of LoadIcon/LoadImage)?
	HINSTANCE hLib = LoadLibrary((LPCTSTR) libraryName.utf16());
	if (hLib != NULL) {
		resourceString = getResourceString(hLib, resourceId);

		FreeLibrary(hLib);
	}

	return resourceString;
}