PDA

Просмотр полной версии : [Вопрос] Открытие файла



KrutoyKrosch
03.02.2017, 20:27
Как можно сделать программку на C++ которая бы открывала Word (не записывало в массив содержимое, а именно открывала Word и в Word'e этот файл) файл (если на компе есть офис, если нет то ошибку бы выбивала) и выполняла какие то другие действия? И именно что бы этот Word файл был внутри нее, а не отдельно на диске.

$continue$
03.02.2017, 20:42
У меня сейчас подобный проект. MS - умеют делать адовую вещь (https://habrahabr.ru/post/110019/). .doc очень трудно распарсить, есть 3 варианта: написать свой парсер, использовать OLE (https://ru.wikipedia.org/wiki/Object_Linking_and_Embedding) и вообще хардкордный - выпилить открытие файлов из OpenOffice/LibreOffice (придется часа 3 поискать по файлам, чтобы найти где открывается файл + там много зависимостей их придется тоже выпилить, что бы заработало) Что касается docx, то это openxml и его не так трудно распарсить.


А, теперь по теме:

Файл находится в папке с программой или как?

Если так, то можно попробовать:


system("START example.doc");

Я не уверен, что это сработает, но можно попробовать ради эксперимента.

KrutoyKrosch
03.02.2017, 21:27
Пишет что файл не найден. Я хочу что бы он вместе с программой компилировался (ну или как правильней сказать), а не как отдельный файл.

https://pp.vk.me/c638519/v638519947/2066e/pgAyWvN6ewc.jpg

- - - Добавлено - - -

Подумал, понял что так не реально. А можно хотя бы сделать так, что бы при запуске программы этот Word файл распаковывался из этой программы (если их вместе копилировать) в ту же папку где лежит программа и уже открывался ?

KrutoyKrosch
04.02.2017, 05:39
Дошло как сделать можно, спасибо за подсказку с


system("START example.doc");

Сработало.

- - - Добавлено - - -

Что бы уж вторую тему не создавать, помогите написать код который крашнет винду... Деление на 0 - Error: деление на 0 не возможно, строка ...

Потом пробовал:


int
b = INT_MIN,
a = b / -1;


Это тоже не крашит, просто выводит число INT_MIN и все... Как еще предложите? Может можно как то с памятью поиграться ?

$continue$
04.02.2017, 13:12
Старый трюк с делением на ноль не пройдет (https://habrahabr.ru/post/179543/). Они пофиксили его. Раньше проходил (статью на хабру оставил), а щас я не имею представление, что может уронить OS. Да и зачем это? Пишешь программу, которая нарушает работу OS пользователя?




int
b = INT_MIN,
a = b / -1;

KrutoyKrosch
04.02.2017, 18:05
Там долгая история, но это для благих целей... Просто написал программку которая вносить небольшие изменения в систему, а что бы они применились нужно перезагрузить комп насильно и не заметно. Мне в голову пришел самый лучший вариант положить винду, что бы она как бы и перезагрузилась и пользователь не понял что произошло. Хехе

$continue$
04.02.2017, 19:49
Это зачем такое? Если это нужно для благих целей, то можно перезагрузить систему с предупреждением и все.

Там долгая история, но это для благих целей... Просто написал программку которая вносить небольшие изменения в систему, а что бы они применились нужно перезагрузить комп насильно и не заметно. Мне в голову пришел самый лучший вариант положить винду, что бы она как бы и перезагрузилась и пользователь не понял что произошло. Хехе