Минимизируйте внешнее приложение с Delphi

К сожалению, ответ таков: параметр printRange впервые поддерживается в Acrobat версии 11 (XI). Вы можете проверить эти вещи из документации .

Я предлагаю вам, во всяком случае, проверить версию в вашем скрипте, как предложено в документации:

if (typeof app.viewerVersion != "undefined" && app.viewerVersion >= 11.0)
{
    // Perform version specific operations.
}

Затем, конечно, вы можете прибегнуть к другим методам, если printRange не поддерживается. Вы можете, например, временно удалить ненужные страницы, а затем распечатать весь документ - это немного странно, но влияет только на версии ниже XI.

5
задан Jon Seigel 20 March 2010 в 21:09
поделиться

3 ответа

Можно использовать FindWindow, чтобы найти, что дескриптор приложения и ShowWindow минимизируют его.

var  
  Indicador :Integer;
begin 
  // Find the window by Classname
  Indicador := FindWindow(PChar('notepad'), nil);
  // if finded
  if (Indicador <> 0) then begin
    // Minimize
    ShowWindow(Indicador,SW_MINIMIZE);
  end;
end;
8
ответ дан 18 December 2019 в 14:54
поделиться

Спасибо за это в конце я использовал измененную версию кода Neftali, я включал его ниже в случае, если у кого-либо еще есть те же проблемы в будущем.

FindWindow(PChar('notepad'), nil);

всегда возвращался 0, поэтому при поиске причины, почему я нашел эту функцию, которая найдет hwnd, и это работало обработка.

function FindWindowByTitle(WindowTitle: string): Hwnd;
    var
      NextHandle: Hwnd;
      NextTitle: array[0..260] of char;
begin
      // Get the first window
      NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
      while NextHandle > 0 do
      begin
        // retrieve its text
        GetWindowText(NextHandle, NextTitle, 255);
        if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
        begin
          Result := NextHandle;
          Exit;
        end
        else
          // Get the next window
          NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
      end;
      Result := 0;
end;

procedure hideExWindow()
var Indicador:Hwnd;
begin
    // Find the window by Classname
    Indicador := FindWindowByTitle('MyApp'); 
    // if finded
    if (Indicador <> 0) then
    begin
        // Minimize
        ShowWindow(Indicador,SW_HIDE); //SW_MINIMIZE
    end;
end;
2
ответ дан 18 December 2019 в 14:54
поделиться

Я не эксперт по Delphi, но если можно вызвать win32 пчелу, можно использовать FindWindow и ShowWindow для уменьшения окна, даже если это не принадлежит приложению.

3
ответ дан 18 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: