Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Black_Lung
http://support.microsoft.com/kb/947821

Цитата:
0x800B0100     TRUST_E_NOSIGNATURE     В этом объекте нет подписи.

Всего записей: 10785 | Зарегистр. 05-02-2003 | Отправлено: 21:30 14-11-2012
Black_Lung



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Драйвер действительно неподписан, но проверка подписи отключена, система winxp. В ручную ставиться без вопросов, а нужно автоматически.

Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 12:38 20-11-2012
Asema

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pomagite pojalusta tol'ko bystree
    Разработать программу, которая создает окно. Закрытие окна должно выполняться щелчком кнопки по значку разворачивания окна, при этом должно создаваться новое окно с таким же стилем. Однократный щелчок кнопки по значку закрытия не приводит к выполнению этого действия. Двойной щелчок по этому значку завершает работу программы.
cod v c++

Всего записей: 1 | Зарегистр. 07-04-2013 | Отправлено: 11:38 07-04-2013
wsadneg



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, товарищи программисты!
Я программирую микроконтроллеры, но вот судьба-злодейка заставляет засесть за winapi, нужно протестить несколько сишных функций на пк с представлением результатов в графическом виде. В общем столкнулся с проблемкой, часть информации вывожу в текстовом виде в WM_PAINT при помощи TextOut, примерно так:

Код:
 
    case WM_PAINT:
    /*  We receive WM_PAINT every time window is updated  */
[часть пропущено]
    TextOut(hdc, 100, 200, szFile, wcslen(szFile));
 
 

При первом вызове весь текст прорисовывается, никаких проблем нет, но когда меняется переменная szFile, то её отображение в окне не перерисовывается до тех пор, пока я не сверну окно или не изменю его размер. Как мне принудительно сделать перерисовку? Вызов WM_PAINT периодически происходит, проверял отладчиком.

Всего записей: 212 | Зарегистр. 20-05-2011 | Отправлено: 17:47 16-08-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
//...
   TextOut(hdc, 100, 200, szFile, wcslen(szFile));
   ReleaseDC(hDlg, hdc);
   return 1;
 
Err, так небудет перерисоваться при развороте из трея.
Рабочий вариант такой:
//...
    case WM_COMMAND:
        if(1001 == LOWORD(wParam))
        {
            GetClientRect(hDlg, &rect);
            InvalidateRect(hDlg, &rect, 0);            //send WM_PAINT
            return 1;
        }
        break;
    case WM_PAINT:
        hdc = GetDC(hDlg);
        GetClientRect(hDlg, &rect);
        FillRect(hdc, &rect, GetSysColorBrush(COLOR_MENU)); //COLOR_WINDOW
        SetBkMode(hdc, TRANSPARENT);
        TextOut(hdc, 5, 5, buf, wsprintf(buf, "0x%08x", __rdtsc()));
        ReleaseDC(hDlg, hdc);
        break;
//...

Всего записей: 1570 | Зарегистр. 01-11-2004 | Отправлено: 19:27 16-08-2013 | Исправлено: ne_viens, 21:35 16-08-2013
wsadneg



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens, спасибки, не пойму правда зачем не нужен ReleaseDC, если у меня нет GetDC, но в общем с InvalidateRect всё прокатило.  

Всего записей: 212 | Зарегистр. 20-05-2011 | Отправлено: 23:29 16-08-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А откуда hdc тогда взялся, от BeginPaint()? Тогда закрывающий EndPaint() нужен. Кстати именно эта комбинация рекомендуется под WM_PAINT, оказывается.

Всего записей: 1570 | Зарегистр. 01-11-2004 | Отправлено: 23:43 16-08-2013
wsadneg



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hdc от BeginPaint(), да (он был в стандартном хелловорде из которого я начал делать проект). EndPaint() там есть, просто я не полностью показал WM_PAINT. В общем я InvalidateRect в WM_COMMAND, где переменная меняется, теперь после изменения переменной нужный участок окна инвалидируется и надпись появляется сразу. Координаты прямоугольника пока вручную вбил, ну это я уже придумаю потом по месту как их вычислить.

Всего записей: 212 | Зарегистр. 20-05-2011 | Отправлено: 11:32 17-08-2013
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста.
Есть ли способ временно программно блокировать autoplay при вставлении CD/DVD?
 
Т.е. когда запущена моя программа, autoplay для конкретного диска не должен срабатывать. Если программу закрыли или прибили в диспетчере задач, то autoplay для этого диска должен вновь заработать.
 
Добавлено:
Разобрался.
http://msdn.microsoft.com/en-us/library/windows/desktop/cc144204%28v=vs.85%29.aspx

Всего записей: 10785 | Зарегистр. 05-02-2003 | Отправлено: 08:40 04-08-2014 | Исправлено: V0lt, 08:44 04-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
какой winapi юзать для запуска исполняемого файла, чтобы при этом возвращался хэндл процесса (или что-то другое), по которому можно определить его PID и другие хар-ки?
ShellExecuteEx или есть еще какие-то?

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 13:08 15-09-2014 | Исправлено: unreal666, 13:11 15-09-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666, CreateProcess возвращает PROCESS_INFORMATION structure, там эти хендлы есть

Всего записей: 11754 | Зарегистр. 03-08-2008 | Отправлено: 13:15 15-09-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
а можно полный пример использования CreateProcessW?
А то я там чего-то не понял как указывать некоторые параметры, к примеру, lpEnvironment.

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 15:28 15-09-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и найти совершенно нетрудно:
 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512%28v=vs.85%29.aspx
 
юникодный аналогично...

Всего записей: 24844 | Зарегистр. 06-12-2002 | Отправлено: 15:37 15-09-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
"CreateProcess function" я и так нашел, потому и спрашиваю (но вот ссылку на пример в нем не увидел).
А от примера толку нет, т.к. тот же параметр lpEnvironment там указан как NULL, т.е. не объяснен.

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 15:43 15-09-2014
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
А от примера толку нет, т.к. тот же параметр lpEnvironment там указан как NULL, т.е. не объяснен.

А чего его объяснять особо? Обычный блок переменных окружения, последовательность сишных строк вида "имя=значение".

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6092 | Зарегистр. 22-10-2005 | Отправлено: 16:35 15-09-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
 

Цитата:
lpEnvironment [in, optional]
 
    A pointer to the environment block for the new process. If this parameter is NULL, the new process uses the environment of the calling process.
 
    An environment block consists of a null-terminated block of null-terminated strings. Each string is in the following form:
 
    name=value\0
 
    Because the equal sign is used as a separator, it must not be used in the name of an environment variable.
 
    An environment block can contain either Unicode or ANSI characters. If the environment block pointed to by lpEnvironment contains Unicode characters, be sure that dwCreationFlags includes CREATE_UNICODE_ENVIRONMENT. If this parameter is NULL and the environment block of the parent process contains Unicode characters, you must also ensure that dwCreationFlags includes CREATE_UNICODE_ENVIRONMENT.
 
    The ANSI version of this function, CreateProcessA fails if the total size of the environment block for the process exceeds 32,767 characters.
 
    Note that an ANSI environment block is terminated by two zero bytes: one for the last string, one more to terminate the block. A Unicode environment block is terminated by four zero bytes: two for the last string, two more to terminate the block.
что здесь непонятного?
 
Добавлено:
 
Abs62
 
о!
привет :)

Всего записей: 24844 | Зарегистр. 06-12-2002 | Отправлено: 16:37 15-09-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
что здесь непонятного?

этот блок непонятен:

Цитата:
    An environment block consists of a null-terminated block of null-terminated strings. Each string is in the following form:  
   
     name=value\0

value - это что? null-терминированная строка? Если нет (т.е. null-терминированной строкой является полностью выражение value\0), то тогда непонятки с юникодом, т.е. его (юникода) строка оканчивается на \0\0.
+  null-терминированный блок - оканчивается всегда на \0 или для юникода \0\0 ?
и т.п.

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 18:55 15-09-2014 | Исправлено: unreal666, 18:56 15-09-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
 
ты под виндой?
 
заряди
 
C:>set > filename.txt
а потом содержимое файла представь в виде нультерм строк...
 
да на фиг тебе это надо, ты собираешься переменные среды динамически менять?
в 95% случаем можно положиться на родителя с lpEnvironmen = NULL

Всего записей: 24844 | Зарегистр. 06-12-2002 | Отправлено: 19:34 15-09-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а потом содержимое файла представь в виде нультерм строк...

LPCTSTR-строк? А блок (null-terminated block) чем заканчивать для CreateProcessW? \0 или \0\0?

Цитата:
да на фиг тебе это надо, ты собираешься переменные среды динамически менять?

А вдруг. Да и привык сразу для общих случаев делать "заготовки".

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 19:41 15-09-2014
PaNov

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
появилось несколько вопросов:
 
- как определить что некоторый диск подключен при помощи утилиты subst?
- как подключить/отключить при помощи winapi диск, аналогично тому как это делает утилита subst?

Всего записей: 34 | Зарегистр. 25-02-2003 | Отправлено: 12:24 03-05-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru