In case you don't know, use sketch → export compiled binary as an easy way to get the hex file. It creates a build directory (which contains the files) in the sketch directory
Do you have links (or documentation) for those 'things'?
When I try that, the chip doesn't do anything. I think it might need another step or a different type of compiling for the ATmega328P to understand it directly.
The problem can be the hardware that incorporates the 328P or your code. So please provide a full description of the project and the schematic where your 328P is incorporated; use a modified version (to match your hardware) of the blink sketch for testing purposes.
Your first problem might be the clock:
For a design with an external 16MHz crystal you can select any of the above boards (for the Pro Mini you will have to select the correct clock frequency).
For a design with an external 8MHZ crystal, you can select the Pro Mini and select the 8MHz option.
As a result, your will get a hex file that matches the clock frequency.
Further you might have to set fuses; a new 328P has factory defaults which might not match your design.
4.10.1 in the linked user guide shows that you can read the fuses; I however don't see where the data is displayed. Only tick config and see what it tells you.
4.10.6 in the linked user guide seems to indicate that you can program the fuses.
The circuit is the ATmega328P, with GND connected to 0V and VCC, AVCC, and AREF connected to 5V. On PB0 (Pin 14), there is the anode of an LED, with the cathode connected to 0V through a 220Ω resistor. The attached image shows the state of the fuses -- it is currently running off the internal 8MHz oscillator, with the CKDIV8 fuse not set. During programming, the chip is removed from the circuit and installed into the integrated ZIF socket of the TL866II+ and the HEX file is written directly to the ATmega328P.
For reference, here's the process I go through to put the program onto the chip:
Compile the program with the board set to Arduino Uno
Put the HEX file into Xgpro (the one that's just "file_name.ino.hex" not the "file_name.ino.with_bootloader.hex", though it doesn't seem to make a difference which one I use)
Set fuses for 8MHz internal RC oscillator, unset CKDIV8 fuse
Program chip with ZIF interface, not ICSP interface
If I'm programming the chip directly with the HEX file, I don't think the clock frequency matters -- the program will just run half as fast (internal 8MHz RC osc as opposed to Arduino Uno's 16MHz crystal)
The clock frequency of the chip wouldn't affect the programming process -- the TL866II+ synchronizes with the chip, and verifies that it passes the data correctly. The only thing frequency affects is execution speed, which wouldn't cause problems with blinking an LED, which is what my circuit does.
It works! Changing the pin number was the solution, but before it could work, I was probing around and realized that the GND on pin 22 didn't actually connect to ground. The one on pin 8 works, though, so I'm just connecting that instead.