Проблема со специальным символом в пути при передаче сообщения DDE в Acrobat Reader

Я искал проблему в течение некоторого времени, но не нашел ее решения. Пробовал и гугл, без толку...

Любая помощь будет оценена по достоинству!

Проблема в следующем:

Я отправляю DDE-команду, чтобы открыть PDF-документ и распечатать его в автоматическом режиме. Проблема с путем, если он имеет символы, отличные от ASCII. Он не будет распознан и выдает ошибку. Что мне делать со строкой пути, чтобы избежать этого и заставить Acrobat Reader понять путь? Я пробовал с "o" вместо "ø", и это работает безупречно... Заранее спасибо!

string file = @"C:\Users\Bø\1_tmp_printpages.pdf";

client.Execute("[DocOpen(\"" + file + "\")]", 60000);
client.Execute("[FilePrintSilent(\"" + file + "\")]", 60000);
client.Execute("[DocClose(\"" + file + "\")]", 60000);
client.Execute("[AppExit]", 60000);

Я использую NDde для передачи сообщений DDE.


person jmelhus    schedule 24.05.2011    source источник
comment
Могу я заставить вас попробовать кое-что? Если у вас установлен Microsoft Office, попробуйте отправить команды DDE, скажем, в Word или Excel, и посмотрите, работает ли это. Я пытаюсь выяснить, у DDE проблемы с символами, отличными от ASCII, или у Acrobat.   -  person Chris Jester-Young    schedule 25.05.2011
comment
Привет! Спасибо за ваш комментарий, я попробовал то, что вы предложили. Это тоже не сработало. Слово показывает? вместо ø. Может быть, NDde неправильно анализирует строку? Может быть, я должен изучить это. Может быть, вы знаете другую лучшую реализацию DDE, которая не ограничивается US-ASCII?   -  person jmelhus    schedule 25.05.2011
comment
Я, честно говоря, не помню, и мне лень сейчас проверять, но меня совсем не удивит, если библиотека будет ограничена ASCII.   -  person Brian Gideon    schedule 02.06.2011


Ответы (1)


Поскольку я не смог найти другую библиотеку DDE, кроме NDde для C#, мне не удалось обработать символы, отличные от US-ASCII, в моем пути. Поэтому я решил использовать другой подход, глаголы.

Вот мой новый код, который принимает символы, отличные от US-ASCII. Он находится внутри блока try, и я делаю некоторую логику, чтобы потом убить AcroRd32. Но сам код для автоматической печати PDF находится внизу... :)

            System.Diagnostics.Process P = new Process();
            P.StartInfo.FileName = mc.PrintPages;
            P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
            P.StartInfo.Verb = "print";
            P.StartInfo.Arguments = printDialog1.PrinterSettings.PrinterName.ToString();
            P.StartInfo.CreateNoWindow = true;           
            P.Start();
person jmelhus    schedule 25.05.2011